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

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

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

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

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

谢谢。

【问题讨论】:

    标签: ios swift firebase firebase-cloud-messaging google-oauth


    【解决方案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
    猜你喜欢
    • 2017-06-16
    • 2015-06-24
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多