3

ユーザーに新しいアカウントの作成を強制するのではなく、ユーザーが Google アカウント (常にメール アドレスだと思います) でサインインできるようにする Android アプリケーションを開発したいと考えています。これに関して3つの質問があります:

  • ユーザーが初めてアプリケーションを起動するときは、AccountManager を使用する必要がありますよね? ユーザーが com.google アカウントを 1 つしか持っていない場合は、そのアカウントを使用します。そうでない場合は、どのアカウントを使用するかを尋ねます。私の質問は、AccountManager のすべての com.google アカウントが適切に認証されていることを確認できますか?アプリケーションは、ユーザーが本人であることを確認できるので、アカウントの選択を求める必要がありません。アプリケーションが起動するたびに?

  • アプリケーションには、ユーザーがロックを解除した制限付きコンテンツをデータベースに保存するサーバーがあります。そのため、ユーザーの外部キーとコンテンツの外部キーを照合して、ユーザーがロックを解除したものを知るために、Google アカウントが必要です。 . Google アカウントをユーザー テーブルの主キーとしてデータベースに保存する方法を教えてください。Google アカウントのメールを保存できましたが、プライバシーの問題はありませんか? 他に何が使えますか?Google アカウントには Facebook ID のような整数値はないと思います。

  • 私が言及したこれらの操作のいずれかで、OpenID または oAuth 2.0 を使用する必要がありますか? アプリケーションにインターネット接続がない場合でも、ユーザーがロックを解除して以前に電話にダウンロードした制限付きコンテンツにアクセスできるようにしたいので、これを求めています。インターネット接続が必要な OpenID を使用する場合はどうなりますか? したがって、ユーザーはアプリケーションに入ることができないはずであり、それは私が望んでいることではありません。

ありがとう

4

1 に答える 1

1

アカウント マネージャーを使用して電話で利用できるアカウントを確認し、どのアカウントを使用したいかユーザーに尋ねるのは良い考えのように思えます。OAuth 2.0 を使用して、クライアント アプリケーションでuserinfoの OAuth 2.0 アクセス トークンを取得し(https://www.googleapis.com/auth/userinfo.profileおそらく使用したいスコープです)、クライアントがサーバーと通信するときにこれをサーバーに送信することをお勧めします。次に、userinfo Google APIを使用して、サーバーはアクセス トークンを使用して、ユーザーが本人であることを確認できます。この API を使用すると、ユーザーの電子メールの代わりに使用できるユーザー ID を取得できます。

認証トークンを取得するにはインターネット アクセスが必要ですが、それは自分のサーバーと通信するときにのみ必要になるため、その時点でトークンを取得できます。

AccountManager によって提供されたアカウントが信頼できるかどうかは 100% わかりませんが、電話で利用できる Google アカウントが提供されます。アクセスせずに電話にアカウントを追加する方法はわかりません。アカウントに。これが可能であれば、セキュリティ上も非常に大きな問題になるため、AccountManager によって提供されたアカウントが本物であることを信頼できると思います。

クライアントで OAuth 2.0 トークンを取得したら、可能であれば、アカウント マネージャーの代わりに Google Play の GoogleAuthUtil を使用することをお勧めします。詳細については、次を参照してください: OAuth2 リクエストの getAuthToken と getToken を使用する場合との違いを簡単に説明します。

于 2013-03-15T11:27:47.740 に答える