【发布时间】:2019-11-12 22:25:35
【问题描述】:
我完全关注this tutorial,但是
@app.route('/test')
def test_api_request():
if 'credentials' not in flask.session:
return flask.redirect('authorize')
# Load credentials from the session.
credentials = google.oauth2.credentials.Credentials(
**flask.session['credentials'])
drive = googleapiclient.discovery.build(
API_SERVICE_NAME, API_VERSION, credentials=credentials)
files = drive.files().list().execute()
# Save credentials back to session in case access token was refreshed.
# ACTION ITEM: In a production app, you likely want to save these
# credentials in a persistent database instead.
flask.session['credentials'] = credentials_to_dict(credentials)
return flask.jsonify(**files)
但是在这部分:
credentials = google.oauth2.credentials.Credentials(
**flask.session['credentials'])
刷新令牌在一小时后过期,出现以下错误:
The credentials do not contain the necessary fields need to refresh the access token. You must specify refresh_token, token_uri, client_id, and client_secret.
但显然在烧瓶会话中 dict 对象在那里:
{'client_id': '<COMMENTED_OUT>.apps.googleusercontent.com',
'client_secret': '<COMMENTED_OUT>',
'refresh_token': None,
'scopes': ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive',
'https://mail.google.com/'],
'token': '<COMMENTED_OUT>',
'token_uri': 'https://oauth2.googleapis.com/token'}
我相信谷歌教程会自动刷新令牌
两个问题 1)我需要手动“刷新”刷新令牌吗?教程中的评论说“将凭据保存回会话以防刷新访问令牌”..这意味着它会自动刷新
2) 这是因为该应用仍处于未验证状态吗?
【问题讨论】:
标签: oauth oauth-2.0 google-oauth