162

Android SDKでAccountManagerを確認しましたが、アカウント情報の保存に使用されています。したがって、私はそれが何を意図しているのかについての一般的な議論を見つけることができません。AccountManagerの背後にある意図と、それがあなたに何をもたらすかについての有益な議論を知っている人はいますか?これがどのタイプのアカウントに適しているかについての意見はありますか?これは、一般的なWebサービスのユーザーのアカウント情報を配置する場所ですか?

4

4 に答える 4

97

この質問は少し古いですが、それでも興味深いと思います。

AccountManager、一緒SyncAdapterContentProvider行きます。

でも君ならできる:

AccountManager/ SyncAdapter/付きContentProvider:

  • AccountManagerユーザーが資格情報を定義するための中心点 ([設定] > [アカウント]) を提供します
  • を介していつ同期を実行できるかは、Android によって決定されSyncAdapterます。これは、バッテリーを最適化するのに適しています (たとえば、ネットワークがダウンしている場合、同期は行われません)。
  • ContentProviderは、アプリケーション間でデータを共有する便利な方法です。注: Android のプロセス間通信には他の方法があります。
  • ContentProviderバックグラウンド スレッドでデータベース アクセスをスケジュールする は、バックグラウンド スレッドでクエリを実行するのにAsyncQueryHanlder役立ちContentProvider、アプリケーションが応答しない (ANR) エラーを防ぎながら、スレッド化を明示的に処理する必要はありません。
  • ContentProviderのオブザーバーに結び付けられContentResolverます。これは、コンテンツが変更されたときにビューに簡単に通知できることを意味します

結論: フレームワークはAccountManager// Web リソースからのデータを同期したい場合に役立ちますSyncAdapterContentProviderAPI 7 ではFake/ Dumb の実装が必要です。

最後に、 を使用している場合は、 Firebase Cloud MessagingSyncAdapter (以前の Google Cloud Messaging) 別名「プッシュ通知」を真剣に検討して、最新の更新と最適化されたバッテリー使用量を取得してください。

于 2011-12-23T10:07:03.290 に答える
24

AccountManager クラスは、電話アカウントと統合されています。したがって、すべてのガイドに従って正しく機能するようになると、[設定] -> [アカウントと同期] メニューの下にアカウントが表示されます。そこからカスタマイズしたり、削除したりすることもできます。さらに、accountManager には、アカウントの認証チケットのキャッシュがあります。これは、アカウントを同期する予定がない場合にも使用できます (私の知る限り)。

アカウントをそのメニューの下に表示したくない場合は、AccountManager を使用せず、アカウント データを別の場所 (共有設定など) に保存する必要がありますhttp://developer.android.com/guide/topics/data/data -storage.html

于 2011-03-10T07:14:35.687 に答える
14

http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/から:

パズルの最初のピースは Account Authenticator と呼ばれ、ユーザーのアカウントが [Accounts & Sync] 設定でどのように表示されるかを定義します。アカウント認証システムの実装には、onBind メソッドから AbstractAccountAuthenticator のサブクラスを返すサービス、ユーザーに認証情報を入力するよう求めるアクティビティ、ユーザーに表示されるアカウントの外観を記述した xml ファイルの 3 つの部分が必要です。また、android.permission.AUTHENTICATE_ACCOUNTS パーミッションを AndroidManifest.xml に追加する必要があります。

于 2010-04-27T12:03:53.547 に答える
9

AccountManager次の理由で優れています。

  • 1 つ目は、アプリの機能へのアクセス レベルが異なる複数のアカウント名を 1 つのアカウント タイプに保存することです。たとえば、ビデオ ストリーミング アプリでは、2 つのアカウント名を持つことができます。1 つは限られた数のビデオへのデモ アクセス権があり、もう 1 つはすべてのビデオへの 1 か月間アクセス権があります。ただし、これは を使用する主な理由ではありません。Accountsなぜなら、この手の込んだものを必要とせずにアプリで簡単に管理できるからですAccounts… .
  • を使用するもう 1 つの利点はAccounts、認証がバックグラウンドで行われ、ユーザーは特定の条件でのみパスワードを求められるため、認証機能がユーザーによって要求されるたびに、ユーザー名とパスワードによる従来の認証を取り除くことです。後で説明します。
  • Android でこの機能を使用するAccountsと、独自のアカウント タイプを定義する必要もなくなります。おそらく、認証に Google アカウントを使用するアプリに出くわしたことがあるでしょう。これにより、新しいアカウントを作成し、ユーザーの資格情報を覚えておく手間が省けます。
  • Accounts設定→アカウントから個別に追加できます
  • クロスプラットフォームのユーザー認証は、 を使用して簡単に管理できますAccounts。たとえば、クライアントは、何度もログインしなくても、Android デバイスと PC で同時に保護された素材にアクセスできます。
  • セキュリティの観点から、サーバーへのすべてのリクエストで同じパスワードを使用すると、安全でない接続での盗聴が可能になります。ここでは、パスワードの盗難を防ぐには、パスワードの暗号化だけでは不十分です。
  • 最後に、android でこの機能を使用する重要な理由は、クライアント (ユーザー) の資格情報を危険にさらすことなく、にAccounts依存するビジネスに関与する 2 つの当事者Accounts、いわゆるオーセンティケーターとリソース所有者を分離することです。用語はかなり曖昧に見えるかもしれませんが、次の段落を読むまであきらめないでください…

ビデオ ストリーミング アプリの例を使用して、後者について詳しく説明します。A 社は、特定のメンバーにプレミアム ストリーミング サービスを提供するために、B 社と契約を結んでいるビデオ ストリーミング ビジネスの所有者です。B 社は、ユーザーを認識するためにユーザー名とパスワードの方法を採用しています。会社 A が B のプレミアム メンバーを認識する 1 つの方法は、B からメンバーのリストを取得し、同様のユーザー名/パスワード マッチング メカニズムを利用することです。このように、オーセンティケーターとリソース所有者は同じです (会社 A)。2 番目のパスワードを覚えておくというユーザーの義務とは別に、A 社のサービスを使用するために B 社のプロファイルと同じパスワードを設定する可能性が非常に高くなります。これは明らかに好ましくありません。

上記の欠点を緩和するために、OAuth が導入されました。認可のオープン スタンダードとして、上記の例では、OAuth は、資格のあるユーザー (サード パーティ) に対して Access Token と呼ばれる何らかのトークンを発行し、企業 A (リソース オーナー) に提供することによって、企業 B (認証者) によって認可が行われることを要求します。トークン。したがって、トークンがないということは、資格がないことを意味します。

AccountManagerこれについては、こちらのウェブサイトで詳しく説明しています。

これは AccountManager を使用したシンプルなアプリです

于 2016-09-11T09:42:52.737 に答える