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用のアプリ切り替えテストツールをダウンロードしてインストールします。

アプリをシミュレートして OAuth 2.0 レスポンス タイプを選択するには、 AndroidiOS 用アプリ切り替えサンプルをダウンロードしてインストールします。

テスト手順

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

本番環境でのテスト

登録と OAuth 2.0 サーバーの実装が完了したら、本番環境でアプリ切り替えをテストできます。

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

Google アカウントの所有者としてログインすると、 [リンク済みアカウント]でアカウントのリンク状態を確認できます。ここから、繰り返しテストの間にアカウントのリンクを解除することもできます。

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