gpt4 book ai didi

android - 谷歌 OAuth2 : perform token refreshing server-side while refresh token or authorization code acquired via mobile app

转载 作者:行者123 更新时间:2023-12-05 00:01:58 24 4
gpt4 key购买 nike

TL;DR - 如果 oauth2 授权发生在原生 android/ios 应用程序中,我如何在后端刷新 token ?
我正在研究 oauth2 与谷歌日历的集成。我的堆栈是将 SPA 应用程序作为 Web 客户端 react ,我们有一个后端 API(在 elixir 中)。我们也在使用混合原生应用程序,因此我们的 JS 代码被转换为相应的 iOS/Android 应用程序(使用电容器)。
流程如下:

  • 用户授权我们使用 oauth2 修改他们的日历,我们要求离线访问
  • 我们从google获取客户端授权码
  • 我们将它发送到我们的后端,它使用身份验证代码来获取访问 token 和刷新 token ,然后将 token 保存在我们的数据库中
  • 我们使用访问 token 来更新谷歌日历。当 token 过期时,我们在后端刷新它

  • 这是在 Web 客户端上运行的流程,但是对于 native 应用程序(android/ios)我被卡住了。当我使用来自 google 控制台项目凭据的对应于 ios/android 应用程序的 clientIds 时,我的后端无法成功使用它来获取刷新和访问 token ,我从 https://oauth2.googleapis.com/token 收到以下响应:
    %{"error" => "invalid_client", "error_description" => "Unauthorized"}
    我正在考虑将交换授权代码以刷新 token 和访问 token 的过程转移到 native 应用程序,但是后端如何才能访问新的访问 token ?如果 token 后端是在 native 应用程序中生成的,我将无法刷新它们,我将再次遇到 clientId 不匹配(后端也使用 clientSecret,而 native 应用程序可以免于使用 clientSecret)。

    最佳答案

    你不能。刷新 token 基于客户端 ID。您需要用于创建它的客户端 ID 和客户端密码才能刷新它。
    用于 Ios 和 android 应用程序的客户端没有您可以使用后端的客户端 ID 和密码。
    不过,你可以反过来做。如果您在后端应用程序中创建了刷新 token 。只要客户端 id 是同一个项目的一部分,ios 和 android 应用程序就可以刷新它。
    我怀疑 android 和 ios sdk 中有一些内部允许这样做。由于缺少客户端密码,它不适用于任何其他类型的客户端。

    关于android - 谷歌 OAuth2 : perform token refreshing server-side while refresh token or authorization code acquired via mobile app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71620394/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com