您可以让 Google OAuth 2.0 访问令牌持续更长时间吗?

Posted

技术标签:

【中文标题】您可以让 Google OAuth 2.0 访问令牌持续更长时间吗?【英文标题】:Can you make Google OAuth 2.0 Access Token Last Longer? 【发布时间】:2020-10-22 16:41:32 【问题描述】:

我正在尝试使用 FCM,它需要来自我的服务帐户的 OAuth 2.0 访问令牌。我在我的 ios 应用程序中使用此令牌将 POST 请求发送到 Apple 推送通知服务器

我刚刚意识到 OAuth 2.0 访问令牌只能持续 3600 秒

    我可以延长使用寿命吗? 如果没有,如何使用 REST API 请求新的,以便我可以在我的应用程序中自动化它?

我认为我必须使用我的服务帐户凭据(与我用于生成 OAuth 2.0 访问令牌的凭据相同)创建一个自定义密钥,然后使用它来获取刷新令牌。虽然我确实得到了 refreshTokenidToken(不管这到底是什么),但 refreshTokenidToken 似乎与 OAuth 2.0 访问令牌不同。

谢谢。

【问题讨论】:

【参考方案1】:

我对您使用的确切集成有点不清楚,但总的来说,您使用刷新令牌来检索新的访问令牌。

如果您正在执行典型的 OAuth 2.0 授权代码流程,则可以按照此处所述交换刷新令牌:Refreshing an access token。简而言之:将grant_type 更改为refresh_token 并将刷新令牌包含在refresh_token 参数中。

但是,如果您使用的是服务帐户,则根本不需要处理刷新令牌。相反,您可以使用您的服务帐户凭据生成新的访问令牌,如下所述:Preparing to make an authorized API call。

您可以考虑使用托管 OAuth 服务(例如我工作的 Xkit)来为您处理此问题。这样您就不必担心如何生成新访问令牌的具体细节,只需继续构建您的应用即可。

【讨论】:

我设法使用 python 脚本生成 OAuth 2.0 访问令牌,但我没有意识到这个访问令牌会在一小时后过期。我不能使用脚本每小时生成新的访问令牌,然后每小时推送我的 iOS 应用程序的更新,所以我想弄清楚的是如何获取新的访问令牌,但在我的范围内iOS 应用程序,这意味着我不想使用 js、py 等。如果我能以某种方式使用 REST API 来获取新的访问令牌,那么这将是最理想的,除非有一个适用于 iOS 的 Firebase OAuth 库来处理这个问题对我来说。 有一个适用于 iOS 的 Firebase 身份验证库:firebase.google.com/docs/auth/ios/google-signin。如果这不起作用,您需要通过设备本身的 OAuth 流程,这是 Google 的文档:developers.google.com/identity/protocols/oauth2/native-app

以上是关于您可以让 Google OAuth 2.0 访问令牌持续更长时间吗?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Google Analytics API v3 的 OAuth 2.0

适用于 Google Bigquery 的 Oauth 2.0

是获取Google Docs OAuth 2.0的任何方式。访问令牌,其存在时间超过3600秒?

javascript 这是一套Google Apps脚本(或Adwords Scripty)Oauth 2.0功能集。我们的想法是您可以使用它来启动OAuth 2.0流程

OAuth 2.0 访问令牌已过期,刷新令牌不可用

谷歌 Oauth 2.0 注销