我从移动应用程序收到了Google身份验证代码,并使用python oauth2client进行交换以访问令牌和刷新令牌,如下所示:
credentials = client.credentials_from_clientsecrets_and_code(
app.config.get('GG_APP_SECRET'),
['profile'],
authCodeFromMobileApp,
redirect_uri='http://example.com')
然后我收到了:
收到没有refresh_token的令牌响应。考虑 通过提示='同意'进行重新验证。
基于{{3}}它说我必须设置:access_type=offline
但是我不确定oauth2client在哪里/如何设置它?
以前有人曾经解决过这个问题吗?
增加:
我也在下面尝试过:
flow = client.flow_from_clientsecrets(app.config.get('GG_APP_SECRET'),
['profile'],
message=None,
cache=None,
redirect_uri='http://example.com',
device_uri=None)
flow.params['access_type'] = 'offline'
credentials = flow.step2_exchange(req_gg_code, http=None)
但仍然有同样的意外结果......
答案 0 :(得分:1)
flow_from_clientsecrets方法有一个名为提示的参数,你可以传递一个值"同意"
flow = client.flow_from_clientsecrets(
app.config.get('GG_APP_SECRET'),
['profile'],
message=None,
cache=None,
redirect_uri='http://example.com',
device_uri=None,
prompt='consent'
)
现在,每次都会要求用户同意,每次使用都会得到 refresh_token 。