我使用谷歌登录通过客户经理在我的Android应用程序。我可以得到accesstoken,我发送到服务器和服务器可以创建/登录新用户。 Accesstoken只有3600秒有效。问题是服务器在此时间过期后无法更新用户的信息。 Web应用程序需要定期检查用户的信息。accountmanager刷新令牌(离线访问)
如何从android帐户管理器获取身份验证令牌和刷新令牌,以便服务器可以使用刷新令牌定期更新数据?我不想通过android应用程序中的webview使用登录。
感谢
我使用谷歌登录通过客户经理在我的Android应用程序。我可以得到accesstoken,我发送到服务器和服务器可以创建/登录新用户。 Accesstoken只有3600秒有效。问题是服务器在此时间过期后无法更新用户的信息。 Web应用程序需要定期检查用户的信息。accountmanager刷新令牌(离线访问)
如何从android帐户管理器获取身份验证令牌和刷新令牌,以便服务器可以使用刷新令牌定期更新数据?我不想通过android应用程序中的webview使用登录。
感谢
这是现在可以:https://developers.google.com/+/mobile/android/sign-in#server-side_access_for_your_app
您要求的一次性授权码,将它发送到您的服务器和服务器交换它的访问令牌和刷新令牌。
目前你不能,我敢肯定不是你希望的答案,我们对此深感抱歉!如果您有网络登录,则可以使用混合流在服务器上获取刷新令牌(请参阅https://developers.google.com/+/web/signin/server-side-flow),但无法将代码作为Android或iOS流的一部分进行检索。
如果这是你需要的东西,你可以在这里提交一个功能请求:https://code.google.com/p/google-plus-platform/issues - 我们正在积极寻找明星的数量来衡量对各种功能的需求。
我刚听说 – 2013-05-14 17:44:42
通过客户经理谷歌授权的过程:
电子邮件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);
这个后台线程会一直在后台运行,同时循环
无论如何,您不应该在Android上的后台线程上使用Thread.sleep()。线程是一个昂贵的资源。 在由AlarmManager触发的处理程序或后台服务上安排您的代码。 – Renascienza 2014-12-13 15:39:48
嗨ADE,我按照说明进行操作,但我不知道在哪里可以找到“一次性授权码“我必须发送到我的服务器才能获取刷新令牌。你可以帮我吗? – Meroelyth 2014-10-21 10:06:10