4

Google Plus サインインを使用して、iOS アプリでユーザーを認証したいと考えています。https://developers.google.com/+/features/sign-inで説明されている iOS のガイドに従いました。クライアント側でのサインインは、Google + プラットフォームと完全に連携します。サーバー側でユーザーを認証する方法がわかりません。

クライアントのアクセス トークンは、 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=XYZ123である程度検証できることがわかりました。ユーザーが HTTPS 経由で送信したアクセス トークンを検証してクライアントを認証するのは安全ですか?

クライアントで Google+ サインイン ボタンを使用する場合のより良い解決策はありますか? 私が理解しているように、Google は Google+ サインイン ボタンの使用を推奨しています。

Google+ サインイン ボタンは、ユーザーがサインアップしてアプリにサインインするための簡単な方法です。これにより、別のユーザー名とパスワードを作成しなくても、Google+ のユーザーを把握し、アプリのよりパーソナライズされたエクスペリエンスを構築できます。

4

1 に答える 1

3

簡単な答え: はい。iOS では、これが現時点で最善の方法です。重要なことは、検証が必要なものを確認することです。一般的には次のとおりです。

  • クライアント ID は、プロジェクトのクライアント ID です。
  • アクセス トークンのユーザー ID のみを使用します
  • トークンの有効期限が切れていない

tokeninfo を呼び出すと、有効期限とその他の基本的な検証が自動的に処理されます。クライアント ID を確認し、tokeninfo 応答のユーザー ID を使用してローカル ユーザーを検索してください。

{
 "issued_to": "1234.apps.googleusercontent.com",
 "audience": "1234.apps.googleusercontent.com",
 "user_id": "104824858261236811362",
 "scope": "https://www.googleapis.com/auth/plus.login",
 "expires_in": 3584,
 "access_type": "online"
}

これは応答の例です。クライアント ID はここでの「オーディエンス」フィールド (実際には、発行先でもあります) であり、user_id は Google ユーザー ID です。これは、一致するアプリケーション ユーザーを見つけるためにデータベースで検索する必要があるものです。

Android と Web には他に 2 つのオプションがあります。ID トークン (基本的には、アクセス トークンを使用して tokeninfo を呼び出して返される情報と同様の情報を直接含む、暗号で署名されたトークン) を取得する方法と、コードを取得する方法 (サーバー側でアクセス トークンと id トークンを交換します)。これら 2 つは現在 iOS では使用できないため、現時点では HTTPS 経由でアクセス トークンを渡すことが最適なオプションです。

于 2013-08-19T14:28:45.373 に答える