Swa*_*nar 12 android google-api access-token google-play-services google-signin
目前,我正在开发用户可以使用Google登录的应用程序.作为登录过程的一部分,我们需要将Google ACCESS TOKEN和REFRESH TOKEN发送到服务器端.
我通过以下方法检索访问令牌,
mAccountName = googleSignInAccount.getEmail();
String scopes = "oauth2:profile email";
String token = null;
try {
token = GoogleAuthUtil.getToken(activity.getApplicationContext(), mAccountName, scopes);
} catch (IOException e) {
Logger.eLog(TAG, e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
我正在访问访问令牌的GoogleAuthUtil类没有刷新令牌的功能.那么如何访问Refresh Token呢?提前致谢!
您应该通过Auth.GOOGLE_SIGN_IN_API使用服务器身份验证代码流:在Android客户端上获取服务器身份验证代码,发送到您的服务器,服务器交换代码以进行刷新和访问令牌(带有秘密).此博客文章中还有更多详细信息.
此外,如果您现在使用GoogleAuthUtil.getToken作为访问令牌,您需要查看此Google登录最佳做法博客文章,了解如何迁移到推荐的流程以确保安全性和最佳用户体验.
我认为你需要尝试AsyncTask下面的代码。
private class RetrieveTokenTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String accountName = params[0];
String scopes = "oauth2:profile email";
String token = null;
try {
token = GoogleAuthUtil.getToken(getApplicationContext(), accountName, scopes);
} catch (IOException e) {
Log.e(TAG, e.getMessage());
} catch (UserRecoverableAuthException e) {
startActivityForResult(e.getIntent(), REQ_SIGN_IN_REQUIRED);
//REQ_SIGN_IN_REQUIRED = 55664;
} catch (GoogleAuthException e) {
Log.e(TAG, e.getMessage());
}
return token;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("AccessToken",s);
}
}
Run Code Online (Sandbox Code Playgroud)
然后像下面这样调用AsyncTask来获取访问令牌:
...
new RetrieveTokenTask().execute(mAccountName);
Run Code Online (Sandbox Code Playgroud)
检查这里。我希望它对你有帮助。
| 归档时间: |
|
| 查看次数: |
10200 次 |
| 最近记录: |