1

サーバーが Android クライアントにサービスを提供するクライアント/サーバー アーキテクチャの一部として Android アプリを構築しています。サーバーはどの Google サーバーとも通信しませんが、Gmail アカウントを介してユーザーを認証する必要があります。つまり、サーバーは、電話からの http(s) リクエストが実際にその特定の Gmail アカウントを持つ人からのものであることを確認する必要があります。

Android の C2DM フレームワークを調べていましたが、サービス関連のデータをやり取りするために確かに使用できますが、Android フォンとサードパーティ (非 Google) サーバー間で Google アカウント認証を使用するにはどうすればよいですか?

Oath2.0 はこれで機能しますか、それとも Oath2.0 は電話と Google のサービス間の直接認証にのみ使用されますか?

4

2 に答える 2

2

サーバーで使用する言語コードについては言及していません。

C2DMを使用する簡単な方法は、AndroidとC2DMの統合をネイティブでサポートするGoogleAppEngine内にあります。

そうでない場合(例:自分のサーバーでphpを使用しているyoure) 、認証トークンを提供できるAccountManagerを調べます(app-userはそれを許可する必要があります)。

新しいデバイスをC2DMサーバーに登録するときは、トークンも通信するデバイスが必要です。これにより、サーバーとGoogleサーバー間の接続を通じて、ユーザーがそのGmailアカウントの所有者であるかどうかを知ることができます。

:)

于 2012-05-25T19:26:46.693 に答える
0

あなたの質問に対する答えはもう出ていると思います。しかし、このようなことを達成することに関心のある他のユーザーを支援するために、この質問に答えたいと思います。

したがって、Google アカウント アクセス トークンを使用して、独自のサービスに対してアプリ ユーザーを認証および承認するには、次の手順に従う必要があります。

  1. Google Cloud Console で 2 つのコンポーネントを使用してプロジェクトを作成します (左ペインの [APIs $ Auth > Credentials] オプションをクリックしてコンポーネントを作成します)。最初のコンポーネントは Web コンポーネント (例: Web サービス) で、2 番目のコンポーネントは Android アプリケーションです。
  2. GoogleAuthUtil.getToken() メソッドを実行し、現在のコンテキスト、メール ID (アカウント マネージャーを使用してクエリ)、スコープを ("audience:server:client_id:") として渡して、Android アプリでアカウント マネージャーにクエリを実行し、アクセス トークンの取得を試みます。
  3. Google Cloud Console で作成されたプロジェクトで使用できる Web コンポーネントの「クライアント ID」パラメーターはどこにありますか。
  4. このメソッドは、JSON Web トークンまたは JWT としてエンコードされた ID トークンを返します。
  5. この ID トークンは、サーバーでユーザーを認証するためにアプリが必要とするすべてのものです。
  6. ID トークンは次のパラメータで構成されます

iss: 常に accounts.google.com

aud: プロジェクトの Web コンポーネントのクライアント ID

azp: プロジェクトの Android アプリ コンポーネントのクライアント ID

email: トークンを要求しているユーザーを特定する電子メールとその他のフィールド。

  1. Web コンポーネントと Android コンポーネントのクライアント ID が既に保存されている https (必須) を介して、このトークンを Web コンポーネント (Web サービスなど) に渡します。

  2. サーバーで受信した JWT ID トークンをデコードした後、トークンの「aud」パラメーターと保存されている Web コンポーネントのクライアント ID が等しいかどうかを確認し、ユーザーを認証します。

  3. GoogleAuthUtil.getToken() メソッドの実行中に、Android アプリケーションで Id トークンにアクセスするために提供された電子メール ID を指定する JWT ID トークンの電子メール パラメータを読み取ることにより、ユーザー ID を取得できます。

注 : Android の ID トークンは、Google Cloud Console でプロジェクトの下に Android コンポーネントを作成するときに指定された同じ証明書によって署名された同じアプリケーションである場合、GoogleAuthUtil.getToken() を実行することによってのみ取得できます。

詳細については、「https://developers.google.com/accounts/docs/CrossClientAuth」を参照してください。

于 2014-01-24T12:49:10.777 に答える