Java:OAuth 2.0アプリが起動するたびにアクセスを要求しないようにGoogle API Reshokensを使用するにはどうすればよいですか?
-
25-10-2019 - |
質問
Google APIには、認証トークンを取得して使用する方法を示す多くのサンプルコードがありますが、JavaクライアントのOAUTH 2.0 googleaccessprotectedResource.refreshtoken()メソッドを使用する方法を示すサンプルコードは見つかりません。 Javaの新しい認可トークン。 Google検索は何も発生しません。StackoverFlowでC#の例しか見つかりません。 Javaのサンプルコードの少しのサンプルコードを指し示すことができれば、これがどのように行われるかを示すことができれば、それは素晴らしいことです。 Androidで取り組んでいるプラットフォーム。 OAUTH 2.0のモデルの例は、ここにあります: http://blog.doityourselfandroid.com/2011/08/06/oauth-2-0-flow-android/
どうもありがとう
解決
ここで私自身の質問に答える。 GoogleAccessProtectedResource.RefreshToken()に電話することで、クラス内でAccessTokenが更新され、必要に応じてゲッターを通じて読み取り、再利用できます。
他のヒント
401(許可されていない)エラーをキャッチする必要があります。この後、このようなことをします。
accountManager.invalidateAuthToken(accessProtectedResource.getAccessToken());
accessProtectedResource.setAccessToken(null);
この後、単にトークンを取り戻します。今回は、ユーザーは再度アクセスを許可する必要はありません。
accountManager.manager.getAuthToken(account, AUTH_TOKEN_TYPE, true,
new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
try {
Bundle bundle = future.getResult();
if (bundle.containsKey(AccountManager.KEY_INTENT)) {
Intent intent = bundle.getParcelable(AccountManager.KEY_INTENT);
intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, REQUEST_AUTHENTICATE);
} else if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) {
accessProtectedResource.setAccessToken(bundle.getString(AccountManager.KEY_AUTHTOKEN));
onAuthToken();
}
} catch (Exception e) {
handleException(e);
}
}
}, null);
所属していません StackOverflow