Java:OAuth 2.0アプリが起動するたびにアクセスを要求しないようにGoogle API Reshokensを使用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/8800466

質問

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);

を参照してください タスクサンプル 参照および対応する 論文.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top