【问题标题】:accountmanager refresh token(offline access)accountmanager 刷新令牌(离线访问)
【发布时间】:2013-03-16 12:34:11
【问题描述】:

我通过我的 Android 应用程序中的帐户管理器使用谷歌登录。我可以获得发送到服务器的访问令牌,服务器可以创建/登录新用户。 Accesstoken 的有效期只有 3600 秒。问题是服务器无法在此时间到期后更新用户信息。 Web 应用需要定期检查用户信息。

如何从 android 帐户管理器获取身份验证令牌和刷新令牌,以便服务器可以使用刷新令牌定期更新数据?我不想在 android 应用程序中通过 webview 使用登录。

谢谢

【问题讨论】:

    标签: android oauth-2.0 google-plus google-oauth


    【解决方案1】:

    现在可以这样做了:https://developers.google.com/+/mobile/android/sign-in#server-side_access_for_your_app

    您请求一次性授权码,将其发送到您的服务器,然后您的服务器将其交换为访问令牌和刷新令牌。

    【讨论】:

    • 您好,我按照说明进行操作,但我不明白在哪里可以找到必须发送到服务器以获取刷新令牌的“一次性授权代码”。你能帮帮我吗?
    【解决方案2】:

    目前你不能,我敢肯定这不是你希望的答案,很抱歉!如果您有 Web 登录,您也可以使用混合流在服务器上获取刷新令牌(请参阅https://developers.google.com/+/web/signin/server-side-flow),但无法在 Android 或 iOS 流中检索代码。

    如果这是您的用例需要的东西,您能否在此处提交功能请求:https://code.google.com/p/google-plus-platform/issues - 我们正在积极查看其上的星数以衡量对各种功能的需求。

    【讨论】:

      【解决方案3】:

      通过客户经理的 Google 授权流程:

      电子邮件ID可以从

      AccountManager accountManager = AccountManager.get(getApplicationContext());
      Account[] accounts = accountManager.getAccountsByType("com.google");
      String emailID = accounts[0].name; // you can retrieve using google account chooser way also
      

      这些行应该在单独的令牌中运行(而不是在 UI 线程中)。

      String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com";
      String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope); 
      

      保存 accessToken 并用于您的 api 访问。

      一小时后(即 3600 秒),我们需要刷新访问令牌。但是现在谷歌一小时后不支持访问。我们必须重新启动应用程序并使用以下行来获取访问令牌。

      String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com";
      String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope);
      

      这个后台线程在while循环中总是在后台运行

      【讨论】:

      • 无论如何,您不应该在 Android 的后台线程上使用 Thread.sleep()。线程是一种昂贵的资源。将您的代码安排在由 AlarmManager 触发的 Handler 或后台服务上。
      猜你喜欢
      • 2020-12-09
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 2020-07-12
      • 2019-01-13
      • 2012-11-26
      • 2018-08-01
      相关资源
      最近更新 更多