【发布时间】:2018-09-14 06:11:04
【问题描述】:
我在使用 Google API 中存储的 refresh_token 来授予新的 access_token 时遇到问题。
我们的注册流程保证只有一个帐户通过我们的客户身份验证。在使用我控制的 Google 帐户进行本地测试时,我会收到一个永久存储的 access_token 和 refresh_token。 access_token 用于在到期之前检索必要的数据。如果我在此guide 之后的任何时间尝试刷新此 access_token,我会收到“invalid_grant”“令牌已过期或撤销。”。我可以通过管理面板验证该帐户是否仍然具有访问权限。我的刷新 POST 看起来像:
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
client_id=[MY_CLIENT_ID.apps.googleusercontent.com]&client_secret=[MY_CLIENT_SECRET]&refresh_token=[USER'S_REFRESH_TOKEN]&grant_type=refresh_token
点击此端点以验证 access_token:
GET /oauth2/v3/tokeninfo?access_token=[USER'S_ACCESS_TOKEN] HTTP/1.1
Host: www.googleapis.com
如果访问令牌未过期,则提供信息,但在过期后,我按预期收到 400“无效值”。
由于我一直在手动测试 refresh_token POST,我认为 Google 方面不会出现限制。
我已在注册过程中验证我们有 access_type:offline。我能够在初始 access_token 期间获得所有请求的数据,这使我相信权限对于我们想要访问的数据是正确的。
我在这里错过了什么?
【问题讨论】:
标签: google-analytics google-api google-analytics-api google-analytics-firebase