JellyBeanデバイス。
これに従って、oauth2トークンをリクエストします。例:
AccountManager am = AccountManager.get(getActivity());
am.invalidateAuthToken(MY_AUTH_TOKEN_TYPE, null);
am.getAuthToken(aGoogleAccount, MY_AUTH_TOKEN_TYPE, null, this,
new OnTokenAcquired(), new Handler(new OnError()));
次に、後のコードサンプルに従ってチェックを行います。
private class OnTokenAcquired implements AccountManagerCallback<Bundle> {
@Override
public void run(AccountManagerFuture<Bundle> result) {
Bundle bundle = result.getResult();
...
Intent launch = (Intent) bundle.get(AccountManager.KEY_INTENT);
if (launch != null) {
startActivityForResult(launch, 0);
return;
}
}
}
KEY_INTENTを取得することはありません。私は次のことを理解しています。
オーセンティケーターがインテントを返す理由はたくさんあります。ユーザーがこのアカウントにログインするのはこれが初めての場合があります。ユーザーのアカウントの有効期限が切れており、再度ログインする必要があるか、保存されている資格情報が正しくない可能性があります。アカウントに2要素認証が必要な場合や、網膜スキャンを実行するためにカメラをアクティブ化する必要がある場合があります。理由は関係ありません。有効なトークンが必要な場合は、それを取得するためにインテントを起動する必要があります。
ただし、常に、トークンが有効な時点でgetAuthToken
コードがメソッドにヒットする前に、許可画面またはログイン画面が表示されます。run
私はもう試した:
- 2ステップ認証をオンにします。アカウントのログインは前に要求される
run
ため、常にトークンをに入れてrun
ください。 - サーバーのパスワードを変更します。繰り返しになりますが、アカウントのログインは前に要求される
run
ため、常にトークンをに入れてrun
ください。
網膜スキャンを試す能力がないので、少し途方に暮れています。
編集1私が抱えている問題は、私が取得する状況があるかもしれないということですKEY_INTENT
。そのため、フィールドに出ているときではなく、今すぐこのコードパスをテストしたいと思います。
前もって感謝します。
ピーター。