OAuth ベースのアプリ切り替えによる Google アカウントのリンク

OAuth ベースのアプリ切り替えリンク(アプリ切り替え)を使用すると、デベロッパーの認証システムに登録されているユーザーのアカウントを、そのユーザーの Google アカウントに簡単にリンクできます。 ユーザーのスマートフォンに対象のアプリがインストールされている場合、ユーザーがアカウントへの関連付けを開始すると、そのアプリにシームレスに切り替わってユーザーの認可を取得します。

この方法では、ユーザーが認証用のユーザー名とパスワードを再入力する必要がないため、アカウントへの関連付けが迅速に行われます。アプリ切り替えでは、アプリのユーザー アカウントの認証情報が使用されます。ユーザーが Google アカウントをアプリにリンクすると、デベロッパーが開発した統合機能を利用できるようになります。

iOS アプリと Android アプリの両方でアプリ切り替えを設定できます。

この図は、ユーザーが自身の Google アカウントをデベロッパーの認証システムにリンクする手順を示しています。最初のスクリーンショットは、ユーザーの Google アカウントがアプリにリンクされている場合にユーザーがアプリをどのように選択できるかを示します。2 番目のスクリーンショットは、ユーザーの Google アカウントをアプリにリンクするための確認画面を示します。3 番目のスクリーンショットは、Google アプリでユーザー アカウントが正常にリンクされたことを示します。
図 1.ユーザーのスマートフォンでのアプリ切り替えによるアカウント リンク。

要件

アプリ切り替えを実装するには、次の要件を満たす必要があります。

  • Android アプリまたは iOS アプリが必要です。
  • OAuth 2.0 認可コードフローをサポートする OAuth 2.0 サーバーを所有、管理、維持している必要があります。

OAuth ベースのアプリ切り替えフロー

次のシーケンス図は、アプリ切り替えにおけるユーザー、Google アプリ、デベロッパーのアプリ、デベロッパーの認可サーバー間のインタラクションの詳細を示しています。

ユーザー Google アプリ デベロッパーのアプリ Google サーバー デベロッパーの認可 サーバー 1. リンクを開始 2. デベロッパーのアプリへのディープリンク 3. 同意画面を表示 4. ユーザーが同意を付与 5. 認証コードを取得 6. authorization_code 7. Google アプリに戻る 8. Google サーバーにコードを渡す 9. トークン交換(POST) 10. アクセス トークン、更新トークン 11. ユーザー トークンを保存 12. ユーザー リソースにアクセス
図 2.アプリ切り替えフローのイベントのシーケンス。 認証コードが指定されている場合、トークンの交換は (ブラウザベースの OAuth リンクフローと同様に)サーバー間で行われます。

役割と責任

次の表に、アプリ切り替えフローにおけるアクターの役割と責任を示します。

アクター / コンポーネント GAL ロール 責任
Google アプリ / サーバー OAuth クライアント アカウントへの関連付け処理を開始し、モバイルアプリへのディープリンクをトリガーして、認証コードをトークンと交換し、サービス API にアクセスするために安全に保存します。
デベロッパーのアプリ 認可エージェント ユーザーを認証し(通常は既存のアプリの認証情報を使用)、 同意を取得して、サーバーから認証コードを取得します。
デベロッパーの認可サーバー 認可サーバー 認可コードと更新トークンを検証し、Google サーバーにアクセス トークンを発行します。

設計ガイドライン

このセクションでは、App Flip のアカウント リンクの同意画面の設計要件と推奨事項について説明します。Google がアプリを呼び出すと、アプリはユーザーに同意画面を表示します。

要件

  1. ユーザーのアカウントが Google Home や Google アシスタントなどの特定の Google サービスではなく、Google にリンクされることを伝える必要があります。

推奨事項

次のことをおすすめします。

  1. Google のプライバシー ポリシーを表示します。同意画面に Google のプライバシー ポリシーへのリンクを含めます。

  2. 共有されるデータ。明確で簡潔な表現を使用して、Google がユーザーのどのデータを必要としているか、またその理由をユーザーに伝えます。

  3. 行動を促す明確なフレーズがある。同意画面に「同意してリンク」などの明確な行動を促すフレーズを記載します。これは、アカウントをリンクするために Google と共有する必要があるデータをユーザーが理解する必要があるためです。

  4. 拒否またはキャンセルできること。リンクしないことを選択した場合に、ユーザーが戻る、拒否する、キャンセルする方法を提供します。

  5. リンクを解除できること。ユーザーがリンクを解除できる仕組み(プラットフォームのアカウント設定への URL など)を提供します。または、ユーザーがリンクされたアカウントを管理できる Google アカウントへのリンクを含めることもできます。

  6. ユーザー アカウントを変更する機能。ユーザーがアカウントを切り替える方法を提案します。これは、ユーザーが複数のアカウントを持っている場合に特に便利です。

    • ユーザーがアカウントを切り替えるために同意画面を閉じる必要がある場合は、回復可能なエラーを Google に送信して、ユーザーが OAuth リンクインプリシット フローを使用して目的のアカウントにログインできるようにします。
  7. ロゴを含めます。同意画面に会社のロゴを表示します。スタイル ガイドラインに沿ってロゴを配置します。Google のロゴも表示する場合は、ロゴと商標をご覧ください。

この図は、ユーザーの同意画面を設計する際に従うべき個々の要件と推奨事項を説明する吹き出しが付いた同意画面の例を示しています。
図 2. アカウント リンクの同意画面のデザイン ガイドライン。

ネイティブ アプリにアプリ切り替えを実装する

アプリ切り替えを実装するには、アプリのユーザー認証コードを変更して、Google からのディープリンクを受け入れる必要があります。

Android アプリでアプリ切り替えをサポートするには、Android 実装ガイドの手順に沿って操作してください。

iOS アプリでアプリ切り替えをサポートするには、iOS 実装ガイドの手順に沿って操作します。

アプリ切り替えをテストする

本番環境のアプリと動作する OAuth 2.0 サーバーが利用可能になる前に、サンプルアプリとテストアプリを使用してアプリ切り替えをシミュレートできます。

アプリ切り替え中、まず Google アプリがお客様のアプリを開き、OAuth 2.0 サーバーから認証コード レスポンスをリクエストします。最後のステップで、レスポンスが Google アプリに返されます。

前提条件

Google アプリをシミュレートして、アプリを起動するインテントをトリガーするには、Android および iOS 用のアプリ フリップ テストツールをダウンロードしてインストールします。

AndroidiOS 用の App Flip サンプルをダウンロードしてインストールし、アプリをシミュレートして OAuth 2.0 レスポンス タイプを選択します。

テストシーケンス

  1. アプリ切り替えテストツールを開きます。
  2. Try Flip! を押して、アプリ切り替えのサンプルアプリを起動します。
  3. サンプルアプリのラジオボタンから回答を選択します。
  4. Send キーを押して、シミュレートされた OAuth 2.0 レスポンスをテストツールに戻します。
  5. テストツールのログメッセージで auth_code またはエラーの詳細を確認します。

本番環境テスト

App Flip は、登録と OAuth 2.0 サーバーの実装が完了した後に、本番環境でテストできます。

自動テストには、1 つの Google アカウントとタスク固有のメールアドレスを使用することをおすすめします。

アカウントのリンク状態は、Google アカウント所有者としてログインした状態で [リンク済みアカウント] を使用して確認できます。アカウントは、ここから繰り返しテストを行うとリンクが解除されることもあります。

必要に応じて、RISC を実装して、プログラムでリンクを解除し、変更を Google に通知することもできます。