私はAndroid SDKでAccountManagerを見てきましたが、それはアカウント情報を格納するために使用されます。したがって、私はそれが何を意図しているのかについての一般的な議論を見つけることができません。誰かがAccountManagerの背後にある意図とそれがあなたを買うものについての有益な議論を知っていますか?これがどのタイプのアカウントに適しているかについての意見はありますか?ここに、一般的なWebサービスのユーザーのアカウント情報を入れますか?
私はAndroid SDKでAccountManagerを見てきましたが、それはアカウント情報を格納するために使用されます。したがって、私はそれが何を意図しているのかについての一般的な議論を見つけることができません。誰かがAccountManagerの背後にある意図とそれがあなたを買うものについての有益な議論を知っていますか?これがどのタイプのアカウントに適しているかについての意見はありますか?ここに、一般的なWebサービスのユーザーのアカウント情報を入れますか?
回答:
この質問は少し古いですが、私はそれがまだ非常に興味深いと思います。
AccountManager
、SyncAdapter
そしてContentProvider
一緒に行きます。
でも君ならできる:
ContentProvider
他のものなしで使用します。AccountManager
他のものなしでを使用します(ただし、以前のAndroid 2.2 / Froyo API 8 なしでは使用できませんAccountManager
SyncAdapter
)とAccountManager
/ SyncAdapter
/ ContentProvider
:
AccountManager
資格情報を定義するための中心点(設定>アカウント)をユーザーに提供しますSyncAdapter
ます。これはバッテリーを最適化するのに適しています(たとえば、ネットワークがダウンしている場合は同期は行われません)。ContentProvider
は、アプリケーション間でデータを共有するための便利な方法です。注:Androidには、プロセス間通信の他の方法があります。ContentProvider
スケジュールバックグラウンドスレッドでのデータベースへのアクセスをAsyncQueryHanlder
照会することができますContentProvider
明示的にスレッドを処理するためにあなたを必要としないながら(ANR)のエラー応答しないアプリケーションを防止し、バックグラウンドスレッドで。ContentProvider
ContentResolver
のオブザーバーと連携:これは、コンテンツが変更されたときにビューに通知するのが簡単であることを意味しますボトムライン:フレームワークAccountManager
/ SyncAdapter
/ ContentProvider
あなたがウェブリソースからデータを同期したい場合に役立ちます。API 7 では、Fake / Dumb実装が必要です。
AsyncTaskLoader
最後に、を使用する場合はSyncAdapter
、Firebase Cloud Messaging(以前のGoogle Cloud Messaging)、つまり「プッシュ通知」を真剣に検討して、更新を更新し、バッテリー使用量を最適化してください。
AccountManagerクラスは、電話アカウントと統合されています。したがって、すべてのガイドに従って正しく機能すると、メニューの[設定]-> [アカウントと同期]にアカウントが表示されます。そこから、それらをカスタマイズしたり、削除することもできます。さらに、accountManagerには、アカウントの認証チケットのキャッシュがあります。これは、(私の知る限り)アカウントを同期する予定がない場合にも使用できます。
あなたのアカウントは、そのメニューの下に表示したくない場合は、AccountManagerをを使用して、別の場所(おそらく共有好みで)アカウントデータを保存しないでくださいhttp://developer.android.com/guide/topics/data/data -storage.html
http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/から:
パズルの最初のピースはアカウント認証システムと呼ばれ、「アカウントと同期」設定でユーザーのアカウントがどのように表示されるかを定義します。アカウント認証を実装するには、3つの要素が必要です。onBindメソッドからAbstractAccountAuthenticatorのサブクラスを返すサービス、ユーザーに資格情報の入力を求めるアクティビティ、およびユーザーに表示したときにアカウントがどのように表示されるかを記述したxmlファイルです。また、android.permission.AUTHENTICATE_ACCOUNTS権限をAndroidManifest.xmlに追加する必要があります。
AccountManager
次の理由により、これは適切です。
Accounts
ただし、これはを使用する主な理由ではありませんAccounts
。この派手な外観を必要とせずに、アプリで簡単に管理できるためです。Accounts
、認証がバックグラウンドで行われ、ユーザーが特定の条件でのみパスワードを要求されるため、ユーザーが認証された機能がユーザーによって要求されるたびに、ユーザー名とパスワードによる従来の認証を取り除くことです後でそれに行きます。Accounts
Androidでこの機能を使用すると、自分のアカウントタイプを定義する必要もなくなります。おそらく、承認のためにGoogleアカウントを使用するアプリに出くわしているので、新しいアカウントを作成してユーザーの資格情報を覚えておく手間が省けます。Accounts
設定→アカウントで個別に追加できますAccounts
。たとえば、クライアントは、繰り返しログインする必要なく、AndroidデバイスとPCで同時に保護されたコンテンツにアクセスできます。Accounts
Androidでこの機能を使用する重要な理由はAccounts
、クライアント(ユーザー)の認証情報を損なうことなく、いわゆるオーセンティケーターとリソースオーナーに依存するビジネスに関与する2つの当事者を分離することです。用語は曖昧に見えるかもしれませんが、次の段落を読むまであきらめないでください…😉後者について、ビデオストリーミングアプリの例を使って詳しく説明します。A社は、B社と契約して特定のメンバーにプレミアムストリーミングサービスを提供するビデオストリーミング事業の所有者です。B社は、ユーザーを認識するためにユーザー名とパスワードを使用します。A社がBのプレミアムメンバーを認識するための1つの方法は、Bからそれらのリストを取得し、同様のユーザー名/パスワードマッチングメカニズムを利用することです。このように、認証システムとリソース所有者は同じです(A社)。ユーザーが2番目のパスワードを覚えておく義務があることは別にして、A社のサービスを使用するためにB社のプロファイルと同じパスワードを設定する可能性が非常に高いです。これは明らかに好ましくありません。
上記の欠点を緩和するために、OAuthが導入されました。承認のオープンスタンダードとして、上記の例では、OAuthは、適格なユーザー(サードパーティ)にアクセストークンと呼ばれるトークンを発行し、会社A(リソースオーナー)にトークン。したがって、トークンがないことは資格がないことを意味します。