このチュートリアルで説明されているように、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']);
}
}