4

Googleのオーセンティケーターを介してログインすると、アクセスの許可画面(GrantPermissionActivity)がアプリ(uid)ごとにアカウントごとに1回プロンプトが表示されますが、カスタムサードパーティオーセンティケーターに対してその画面を表示するように選択できる場所は文書化されていません。

とにかくこれを行う方法があるかどうか誰かが知っていますか?

カスタムチェックを挿入してGrantPermissionActivityを模倣しようとしましたが、問題はAuthTokenがキャッシュされることです。そのため、getAuthTokenはトークンがキャッシュされたカスタムコードを渡すだけなので、サードパーティのアプリにこれを適用する方法がわかりませんでした。

これは次の問題と同じではないことに注意してください。ユーザーがすでにアクセスを許可した後、AccountManagerに[アクセス要求]画面を表示させるにはどうすればよいですか。

4

2 に答える 2

2

非常に良い解決策を見つけたと思いますが、これはおそらく Google の許可画面の仕組みではありません。

Authenticator では、AccountManager がアプリの UID/PID を検証するため、スプーフィングできない呼び出し元のパッケージを取得します。呼び出し元のパッケージをトークン タイプの一部として使用し、アプリのインストール日 (オプション、パッケージ マネージャーを使用して検出) を使用すると、各アプリのトークンが個別にキャッシュされます。

呼び出し元のパッケージとしてトークン タイプにパッケージ名が含まれていない場合、トークンは返されません。

認証トークンの種類ごとに、クライアント シークレットがクライアント キーを考慮していることも確認します。次に、クライアントがカスタム アカウント タイプごとにアカウントごとのキーを初めて要求する場合にのみ、Allow Access 画面のインテントを返します。

アプリをホワイト リストに登録する場合は、アカウント トークンの種類ごとに行うこともできます。

于 2013-01-16T16:41:11.063 に答える
1

完全な答えはありませんが、途中で少しお手伝いできるかもしれません。

getAuthTokenの実装を見ると、オーセンティケーターが customTokens を使用している場合、権限が自動的に付与されることがわかりますAuthenticationDescriptionのドキュメントには、カスタム トークンが使用されている場合、「Authenticator が独自のトークン キャッシングと許可画面を処理する」ことも記載されています。その場合、この画面を表示することはできないと思います。

カスタム チェックを挿入して GrantPermissionActivity を模倣しようとしましたが、問題は AuthToken がキャッシュされていることです...

invalidateAuthToken でトークンを無効化する場合は、キャッシュからクリアする必要があります。無効にするトークンをメソッドに渡すことを忘れないでください ( AccountManager: invalidateAuthToken はトークンを無効にしないを参照してください)。

于 2013-01-04T07:37:29.513 に答える