Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OAuth v2(Google API)到期访问令牌_Api_Oauth_Google Analytics_Google Oauth - Fatal编程技术网

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

OAuth v2(Google API)到期访问令牌,api,oauth,google-analytics,google-oauth,Api,Oauth,Google Analytics,Google Oauth,我正在使用具有预构建OAuth2连接器的图形框架构建一个集成组件。 对于OAuth v2,此框架需要以下字段: 赠款类型 范围 验证服务器URL 客户端Id 客户机密 访问令牌 刷新令牌 我需要从Google Analytics API获取数据,所以我去了Google开发控制台 (). 我生成了一个“web应用程序的客户端ID”。通过这个对象的参数,我可以填充上面的一些参数 授权类型:“授权\授权代码” 客户端Id:'RANDOMCHARSam5o37nsiu730d.apps.googl

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

  • 赠款类型
  • 范围
  • 验证服务器URL
  • 客户端Id
  • 客户机密
  • 访问令牌
  • 刷新令牌
我需要从Google Analytics API获取数据,所以我去了Google开发控制台 (). 我生成了一个“web应用程序的客户端ID”。通过这个对象的参数,我可以填充上面的一些参数

  • 授权类型:“授权\授权代码”
  • 客户端Id:'RANDOMCHARSam5o37nsiu730d.apps.googleusercontent.com'
  • 客户机密:“随机字符WBA5OH5QYLUA”
然后使用GoogleOAuthPlayerly()我就能够填充缺少的部分

  • 作用域:“”
  • 身份验证服务器URL:“”
  • 访问令牌:“RANDOMCHARSQAQv4HRF5-JsQEzUS61lj2YremyCocv0PQ4-agpzJe”
  • 刷新令牌:“RANDOMCHARSLPJnL4FPaDc2KP6V8kCzjjHO2Kj4Np_3X0”
一切正常,我被授权访问,并从Google Analytics获取数据,但只是一段时间,如果我重试,几分钟后我收到授权失败错误。 我相信这个问题与访问令牌的过期有关,但我不知道如何解决这个问题。 值得一提的是,此活动是批处理的(无人机交互),因此没有人可以请求新的访问令牌。 集成框架是不可扩展的(我无法编写代码来更新代码),因此我相信有一种方法可以获得永不过期的访问令牌或其他某种机制来实现相同的结果

总之,我不确定我是否从一开始就正确地处理了需求(web应用程序的客户端ID)

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

此文档说明了如何执行此操作:


要回答您的首要问题,是的,您正确地处理了所有问题。您所需要做的就是通过刷新访问令牌来处理访问令牌过期的情况。另外,当您最初请求访问令牌时,响应应该告诉您该令牌的有效期,因此您应该仅在该令牌过期时刷新该令牌。

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


发件人:

嘿,菲利普,谢谢你的帮助。我看了你给我的链接。我的理解是,尽管访问令牌过期,但刷新令牌不会过期。因此,一旦access_令牌过期,如果我发送一个带有refresh_令牌的请求,Google Oauth实现就会向我发回一个新的access_令牌,我可以使用它来访问资源(在我的例子中是通过Google分析API进行身份验证)。我的理解正确吗?干杯,乔凡尼没错。请记住,刷新令牌请求可能会失败。在原始授权人撤销访问的情况下会发生这种情况,但是如果您是原始授权人,那么显然您不必担心这一点。我们可以通过刷新令牌请求尽可能多的访问令牌吗?这样我就可以永久地使用它,并且可以按时访问用户?“是吗?”菲利普沃顿你的回答对我帮助很大。我们可以添加电子邮件和我们自己的gmail帐户的密码吗?因为我正在处理的应用程序是一个自动脚本,它将通过服务器上的cronjob每24小时运行一次。因此没有用户交互。但是在测试身份验证时,提示我选择一个gmail帐户进行身份验证。嘿,伙计们!文档更改了,我找不到如何刷新过期访问令牌的任何代码。。。有人能帮忙吗?谢谢!这是有价值的信息-“当前每个客户端每个用户帐户的刷新令牌限制为50个。如果达到该限制,创建新令牌会自动使最旧的令牌无效,而不会发出警告。此限制不适用于服务帐户。”