Я использую Flask & Oauth 2 для аутентификации пользователя в моей системе. Вход в Google работает нормально, но если я продолжаю входить в систему в течение длительного времени, выход из системы выдает эту ошибку.
{
"error": "invalid_token",
"error_description": "Token expired or revoked"
}
Я новичок в Flask и веб-разработке и не могу понять, почему это происходит. Если я пытаюсь войти снова, он говорит, что пользователь уже подключен.
Кнопка «Мой вход» HTML
<div id="signinButton">
<span class="g-signin"
data-scope="openid email"
data-clientid="<ClientID>.apps.googleusercontent.com"
data-redirecturi="postmessage"
data-accesstype="offline"
data-cookiepolicy="single_host_origin"
data-callback="signInCallback"
data-approvalprompt="force">
</span>
</div>
Мой метод отключения: код переходит на ошибку 400
# Google Sign out method
@app.route('/gdisconnect')
def gdisconnect():
access_token = login_session.get('access_token')
if access_token is None:
print 'Access Token is None'
response = make_response(
json.dumps('Current user not connected.'), 401
)
response.headers['Content-Type'] = 'application/json'
return response
print 'In gdisconnect access token is %s' % access_token
print 'User name is: '
print login_session['username']
url = 'https://accounts.google.com/o/oauth2/revoke?token=%s' % login_session['access_token']
print url
h = httplib2.Http()
result = h.request(url, 'GET')[0]
print 'result is '
print result
if result['status'] == '200':
del login_session['access_token']
del login_session['gplus_id']
del login_session['username']
del login_session['email']
del login_session['picture']
response = make_response(json.dumps('Successfully disconnected.'), 200)
response.headers['Content-Type'] = 'application/json'
return response
else:
response = make_response(
json.dumps('Failed to revoke token for given user.',
400)
)
response.headers['Content-Type'] = 'application/json'
return response