1

このチュートリアルで説明されているように、webapp2 認証を使用する Google App Engine にアプリがあります(したがって、Google アカウント API はユーザー アカウント管理には使用されません)。

したがって、この Google チュートリアルを使用して Google+ サインインを実装しています。フロントエンドは正常に動作しますが、コールバックに問題があります。Flask を使用せずにこれを実行したいと思います。これは、応答を生成するためだけに使用されているように見えるためです。コールバックの最初の部分の元のコードは次のとおりです。

if request.args.get('state', '') != session['state']:
    response = make_response(json.dumps('Invalid state parameter.'), 401)
    response.headers['Content-Type'] = 'application/json'
    return response

Flask の依存関係を取り除くために、これを次のように書き直しました。

if self.request.get('state') != self.session.get('state'):
    msg = json.dumps('Invalid state parameter.')
    self.response.headers["Content-Type"] = 'application/json'
    self.response.set_status(401)
    return self.response.out.write(msg)

ただし、問題は、 self.request.get('state') が何も返さないことです。これは、応答を正しく読んでいないためだと思いますが、正しく行う方法がわかりません。

コールバックを起動する Javascript は次のとおりです。

function signInCallback(authResult) {
    if (authResult['code']) {
      // Send the code to the server
      $.ajax({
        type: 'POST',
        url: '/signup/gauth',
        contentType: 'application/octet-stream; charset=utf-8',
        success: function(result) {
          console.log(result),
        processData: false,
        data: authResult['code']
      });
    } else if (authResult['error']) {
      // There was an error.
      // Possible error codes:
      //   "access_denied" - User denied access to your app
      //   "immediate_failed" - Could not automatially log in the user
      console.log('There was an error: ' + authResult['error']);
    }
  }
4

0 に答える 0