4

AccountManagerこのコード で Android にログインできます: http://code.google.com/p/google-api-java-client/wiki/AndroidAccountManager

でもログアウトの仕方がわからない?

4

3 に答える 3

4

あなたはそうしない。組み込みのAndroid認証を使用する場合は、ユーザーが[アカウントと同期]コントロールパネルで指定したユーザー名とパスワードを使用して認証します。その認証を取得したら、それを使用して認証トークンを取得します。このトークンをキャッシュして、問題が発生するまで使用する必要があります。

それでは、「com.google」スタイルのアカウントを使用してGoogleサービスにアクセスする方法を見ていきましょう。アプリが同期したい場合は、AccountManagerを使用して認証することになります(これを行うには、間違いなくSyncAdapterを使用する必要があります)。認証すると、認証トークンを取得します。これはランダムな文字の大きな文字列であり、後続のWeb呼び出しで「キー」として機能します。これを保存し、問題がない限り、再度認証する必要はありません。だから、フェッチに行きたい...たとえば、グーグルファイナンスポートフォリオ。httpgetヘッダーの一部としてauth-tokenを含めます。次の2つのいずれかが発生します。

  1. Googleはそのトークンを高く評価し、(ユーザー名とパスワードのペアの代わりに)それを使用してユーザーを認証し、リクエストのデータを返します。
  2. Googleはhttpエラー40xを返します。これは、提供された認証トークンのyoupが適切でないことを示しています。

後者の場合は、次の2つの理由で発生します。

  1. 古すぎます。Googleは、定期的に再認証することを望んでいます(gmail.comでパスワードを毎週1〜2週間入力して、それがまだあなたであることを確認する必要があるのと同じです)。これが発生した場合は、認証トークンを無効にして(関数呼び出しがあります)、新しいもの。
  2. 認証トークンを取得してから、ユーザーがパスワードを変更しました。同じことですが、途中を除いて、デバイスは認証に失敗し、パスワードを再入力する必要があることをユーザーに通知します。再入力するまで、NULLの認証トークンを取得するか、呼び出しを行います。パスワードを取得するまでブロックします(トークンを取得するために使用する関数呼び出しによって異なります)。

いずれにせよ、ログアウトすることはありません。取得してキャッシュした認証トークンを使用して、使用しなくなるまでサービスを使用するだけです。取得した認証トークンは、使用している限り有効なセッションキーのようなものと考えてください。

于 2011-02-28T14:57:05.157 に答える
3

呼び出して現在の認証トークンを無効にしないのはなぜですか

 AccountManager.getInstance().invalidateAuthToken(accountType, currentToken);

AccountManager.invalidateAuthToken ドキュメント

于 2013-05-22T23:28:45.507 に答える