現在、ユーザーが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());
}
アクセストークンにアクセスしているGoogleAuthUtilクラスに、更新トークンの機能がありません。では、更新トークンにアクセスするにはどうすればよいですか?前もって感謝します!
Auth.GOOGLE_SIGN_IN_API経由のサーバー認証コードフロー を使用する必要がありますAndroidクライアントでサーバー認証コードを取得し、サーバーに送信します。サーバーは更新のためにコードを交換し、アクセストークン(シークレット付き) ブログ投稿 にも詳細があります。
また、アクセストークンにGoogleAuthUtil.getTokenを使用している場合は、これをチェックして、セキュリティと最善のセキュリティを確保するために推奨フローに移行する方法を確認してください Googleサインインのベストプラクティスブログの投稿 。 UX。
以下のように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);
}
}
次に、以下のようにAsyncTask
を呼び出してアクセストークンを取得します。
...
new RetrieveTokenTask().execute(mAccountName);
チェック ここ 。お役に立てば幸いです。