OAuth v2(Google API)到期访问令牌

时间:2014-09-25 22:07:47

标签: api oauth google-analytics google-oauth

我正在使用具有预构建OAuth2连接器的图形框架构建集成组件。 此框架需要以下OAuth v2字段:

  • 授权类型
  • 范围
  • 验证服务器网址
  • 客户端ID
  • 客户端秘密
  • 访问令牌
  • 刷新令牌

我需要从Google AnalyticsAPI获取数据,因此我访问了Google Dev Console (https://console.developers.google.com/project/927890000889/apiui/credential)。我为网络应用程序生成了一个客户端ID'。从这个对象的参数我能够填充上面的一些参数

  • 授权类型:' authorisation_code'
  • 客户ID:' RANDOMCHARSam5o37nsiu730d.apps.googleusercontent.com'
  • 客户秘密:' RANDOMCHARSiSwBA5OH5qYLUa'

然后使用Google Oauth Playground(https://developers.google.com/oauthplayground)我能够填补缺失的位数

一切正常,我有权访问并从Google Analytics获取数据,但只是一段时间,几分钟后如果我重试我收到授权失败错误。 我认为问题与访问令牌的到期有关,但我不知道如何解决这个问题。 值得一提的是,这个活动是批处理的(没有人工交互),所以没有人可以请求新的访问令牌。 集成框架不可扩展(我不能编写代码来更新代码)所以我相信有一种方法可以获得永不过期的访问令牌或其他一些机制来实现相同的结果。

总而言之,我不确定自开始以来我是否正确处理了该要求(Web应用程序的客户端ID)。

非常感谢任何帮助, 乔瓦尼

2 个答案:

答案 0 :(得分:21)

访问令牌通常在60分钟后过期。如果您有刷新令牌,则可以使用刷新令牌获取新的(有效)访问令牌。

本文档解释了如何做到这一点:
https://developers.google.com/accounts/docs/OAuth2WebServer#refresh

要回答你的首要问题,是的,你正在接近一切。您需要做的就是通过刷新来处理访问令牌已过期的情况。此外,当您最初请求访问令牌时,响应应该告诉您它的有效期限,因此您只应刷新该令牌,如果它已过期。

答案 1 :(得分:1)

您可以使用刷新令牌使其更长时间使用。 Google Auth服务器发布的刷新令牌永不过期, 由于以下原因之一,令牌可能会停止工作: 用户已撤销访问权限。 令牌已经使用了六个月。 用户更改了密码,令牌包含Gmail范围。 用户帐户已超过一定数量的令牌请求。目前每个用户帐户限制为50个刷新令牌 每个客户端。如果达到限制,则创建新令牌会自动使最旧的令牌无效而不会发出警告。 此限制不适用于服务帐户。

来自:https://developers.google.com/identity/protocols/OAuth2