2

AbstractAccountAuthenticator を拡張し、getAuthToken をオーバーライドしました。キャッシュされた authtoken が有効な場合を除いて、getAuthToken ですべてがうまく機能します。有効な場合は、getAuthToken が呼び出されずに AccountManagerCallback (signinCallback) が呼び出されます。私の getAuthToken はアプリ固有のデータを含む戻りバンドルをロードするため、これは問題です。

これは私が使用するアカウント マネージャーの呼び出しです。

`signinFuture = mAM.getAuthToken(account, getApplicationContext().getString(R.string.ACCOUNT_TYPE), null, SignInFragmentActivity.this, signinCallback, null);`

これはあなたが期待するものですか、それともアカウント マネージャーの getAuthToken は常に私のオーセンティケーターのオーバーライドを呼び出す必要がありますか? 私は何を間違っていますか?

4

1 に答える 1

1

少し遅れましたが、ここに来たGoogle検索で同様のものを探していたので、この回答を文書化しています。

Android のドキュメントを詳しく調べると、getAuthToken は (呼び出しの結果に応じて) 3 セットのキーのみを返すことが想定されていることが明らかになります。

正しいアプローチは、AccountManager を使用して明示的にアカウントを作成するときにアプリ固有のデータを UserData バンドルに格納し、有効な認証トークンを取得したらそれを取得することです。

詳細については、 http://developer.android.com/reference/android/accounts/AccountManager.htmlを参照してください。

于 2013-12-03T16:08:15.300 に答える