概要

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

アカウントのリンクにより、Google アカウント所有者は迅速かつシームレスかつ安全にサービスに接続できます。Google アカウント リンクを実装して、プラットフォームのユーザーを Google のアプリやサービスと共有することもできます。

安全な OAuth 2.0 プロトコルを使用すると、ユーザーの Google アカウントをプラットフォーム上のアカウントに安全にリンクできるため、Google アプリケーションとデバイスがサービスにアクセスできるようになります。

ユーザーはアカウントのリンクやリンク解除を行うことができます。また、必要に応じて Google アカウントのリンクを使用して、プラットフォームに新しいアカウントを作成することもできます。

ユースケース

Google アカウントのリンクを導入する理由として、次のようなものがあります。

  • プラットフォームから取得したユーザーのデータを Google のアプリやサービスと共有します。

  • Google TV を使用して動画コンテンツや映画コンテンツを再生します。

  • Google Home アプリと Google アシスタントを使用して、Google スマートホームの接続デバイスを管理、操作する(「OK Google, ライトをつけて」)

  • 会話型アクションを使用して、ユーザーがカスタマイズした Google アシスタントのエクスペリエンスと機能を作成できます。「OK Google, スターバックスでいつもの注文をして」

  • Google アカウントを特典パートナー アカウントにリンクした後に、ユーザーが YouTube で対象のライブ配信を視聴して報酬を獲得できるようにします。

  • 登録時に新しいアカウントには Google アカウント プロフィールの合意済みデータが事前入力されます。

サポートされている機能

これらの機能は、Google アカウントのリンクに対応しています。

  • 暗黙的な OAuth リンクのフローを使用して、データをすばやく簡単に共有します。

  • OAuth リンク認証コードのフローを使用して、セキュリティを強化します。

  • 既存のユーザーをログインさせるか、Google が検証済みの新しいユーザーをプラットフォームに登録し、合理化されたリンクを使用して同意を得て、データを安全に共有します。

  • アプリ切り替えで手間を削減1 回タップすると、信頼できる Google アプリから検証済みの Android アプリまたは iOS アプリを安全に開くことができます。また、1 回タップすると、ユーザーの同意を求める権限が付与されます。また、アカウントをリンクする場合もあります。

  • 必要なデータのみを共有するようにカスタム スコープを定義することでユーザーのプライバシーを高め、データの使用方法を明確に定義することでユーザーの信頼を高める。

  • プラットフォームでホストされているデータとサービスへのアクセスは、アカウントのリンクを解除することで取り消すことができます。オプションのトークン取り消しエンドポイントを実装すると、Google が開始したイベントとの同期を維持できます。一方、クロスアカウント保護(RISC)を使用すると、プラットフォームで発生するリンク解除イベントを Google に通知できます。

アカウントのリンクのフロー

Google アカウントのリンクのフローは 3 つあり、いずれも OAuth ベースであり、OAuth 2.0 準拠の承認とトークン交換のエンドポイントを管理または制御する必要があります。

リンクプロセス中には、アカウント所有者がアカウントのリンクとデータの共有に同意した後、個々の Google アカウントのアクセス トークンを Google に発行します。

OAuth リンク('ウェブ OAuth')

これはユーザーにリンク用のウェブサイトを表示する基本的な OAuth フローです。ユーザーはアカウントにログインするためにウェブサイトにリダイレクトされます。ログインしたユーザーは、ユーザーのサービスでデータを Google と共有することに同意します。この時点で、ユーザーの Google アカウントとサービスがリンクされます。

OAuth リンクは、認証コードと暗黙的な OAuth フローをサポートします。暗黙的フローに対して OAuth 2.0 準拠の承認エンドポイントをホストし、認証コードフローの使用時に承認エンドポイントとトークン交換エンドポイントの両方を公開する。

図 1. ウェブ OAuth を使用したユーザーのスマートフォンでのアカウントのリンク

OAuth ベースのアプリ切り替えリンク('アプリ切り替え')

リンクのためにユーザーをアプリに誘導する OAuth フロー。

OAuth ベースのアプリ切り替えリンクは、検証済みの Android または iOS モバイルアプリと Google のプラットフォーム間を移動する際に、提案されるデータアクセスの変更を確認し、プラットフォームのアカウントを Google アカウントにリンクすることに同意します。アプリ切り替えを有効にするには、サービスで認証コードフローを使用して OAuth リンクまたは OAuth ベースの Google ログイン リンクがサポートされている必要があります。

アプリ切り替えは AndroidiOS の両方でサポートされています。

仕組み:

Google アプリは、アプリがユーザーのデバイスにインストールされているかどうかを確認します。

  • アプリが見つかると、そのユーザーはあなたのアプリに「反転」します。アプリはユーザーから Google にアカウントをリンクするという同意を得てから、Google のページに戻します。
  • アプリが見つからない場合や、アプリのフリップ リンク プロセスでエラーが発生した場合、ユーザーは簡素化またはウェブ OAuth フローにリダイレクトされます。

図 2. アプリ切り替えを使用するユーザーのスマートフォンでのアカウントのリンク

OAuth ベースの合理的なリンク設定(合理化)

OAuth ベースのスムーズなリンクは、OAuth リンクに Google ログインを追加する機能で、ユーザーは Google のサービスから離れることなくリンクプロセスを完了できるため、操作や処理の中断が軽減されます。OAuth ベースの合理化されたリンクは、Google ログインと OAuth リンクを組み合わせることで、シームレスなログイン、アカウントの作成、アカウントのリンクで最高のユーザー エクスペリエンスを実現します。ご使用のサービスは、OAuth 2.0 準拠の認可とトークン交換エンドポイントをサポートする必要があります。さらに、トークン交換エンドポイントは JSON Web Token(JWT)アサーションをサポートし、checkcreateget インテントを実装する必要があります。

仕組み:

Google がユーザー アカウントに対してアサーションを行い、以下の情報を渡します。

  • データベースにユーザーのアカウントが存在する場合、ユーザーはサービス上のアカウントと Google アカウントを正しくリンクします。
  • データベースにユーザーのアカウントがない場合、そのユーザーは Google が表明した情報(メール、名前、プロフィール写真)を使って新しいサードパーティ アカウントを作成するか、別のメールアドレスでログインしてリンクする(ウェブ OAuth 経由でサービスにログインする必要がある)ことができます。

図 3. 合理化されたリンクでユーザーのスマートフォンでのアカウント リンク

どのフローを使用すればよいでしょうか。

ユーザーが快適にリンクできるようにするため、すべてのフローを実装することをおすすめします。フローの合理化とアプリ切り替えのフローは、ユーザーが非常に少ない手順でリンク処理を完了できるので、リンクの負担が減ります。ウェブ OAuth リンクは最も手間がかからないため、まず他のリンクフローに追加できます。

トークンの操作

Google アカウントのリンクは、OAuth 2.0 業界標準に基づいています。

アカウント所有者がアカウントをリンクしてデータを共有することに同意した後で、個々の Google アカウントのアクセス トークンを発行します。

トークンタイプ

OAuth 2.0は、トークンと呼ばれる文字列を使用して、ユーザーエージェント、クライアントアプリケーション、およびOAuth2.0サーバー間で通信します。

アカウントのリンク中には、次の3種類のOAuth2.0トークンを使用できます。

  • 認証コード。アクセストークンおよび更新トークンと交換できる短期間のトークン。セキュリティ上の理由から、Googleは認証エンドポイントを呼び出して、1回限りのコードまたは非常に短命なコードを取得します。

  • アクセストークン。ベアラにリソースへのアクセスを許可するトークン。このトークンの損失から生じる可能性のある露出を制限するために、トークンの有効期間は限られており、通常は1時間ほどで期限切れになります。

  • トークンを更新します。アクセストークンの有効期限が切れたときに新しいアクセストークンと交換できる、有効期間の長いトークン。サービスがGoogleと統合されると、このトークンはGoogleによって排他的に保存され、使用されます。 Googleはトークン交換エンドポイントを呼び出して、更新トークンをアクセストークンと交換します。アクセストークンは、ユーザーデータへのアクセスに使用されます。

トークン処理

クラスター環境およびクライアントサーバー交換での競合状態は、トークンを操作するときに複雑なタイミングおよびエラー処理シナリオをもたらす可能性があります。例えば:

  • 新しいアクセストークンのリクエストを受け取り、新しいアクセストークンを発行します。同時に、以前の有効期限が切れていないアクセストークンを使用して、サービスのリソースへのアクセス要求を受け取ります。
  • 更新トークンの返信は、Googleによってまだ受信されていません(または受信されていません)。一方、以前に有効だった更新トークンは、Googleからのリクエストで使用されます。

要求と応答は、任意の順序で到着するか、クラスターで実行されている非同期サービス、ネットワークの動作、またはその他の手段のためにまったく到着しない可能性があります。

お客様とGoogleのトークン処理システム内およびシステム間での即時かつ完全に一貫した共有状態は保証されません。複数の有効な有効期限の切れていないトークンは、システム内またはシステム間で短期間共存できます。ユーザーへの悪影響を最小限に抑えるために、次のことを行うことをお勧めします。

  • 新しいトークンが発行された後でも、有効期限が切れていないアクセストークンを受け入れます。
  • トークンローテーションの更新の代替手段を使用します。
  • 複数の同時に有効なアクセストークンと更新トークンをサポートします。セキュリティのために、トークンの数とトークンの有効期間を制限する必要があります。
メンテナンスと停止の処理

メンテナンス中または計画外の停止中、Googleは認証またはトークン交換エンドポイントを呼び出して、アクセスを取得し、トークンを更新できない場合があります。

エンドポイントは、 503エラーコードと空の本文で応答する必要があります。この場合、Googleは失敗したトークン交換リクエストを限られた時間だけ再試行します。 Googleが後で更新トークンとアクセストークンを取得できる場合、失敗したリクエストはユーザーに表示されません。

アクセストークンのリクエストが失敗すると、ユーザーが開始した場合、目に見えるエラーが発生します。暗黙的なOAuth2.0フローが使用されている場合、ユーザーはリンクの失敗を再試行する必要があります。

推奨事項

メンテナンスの影響を最小限に抑えるためのソリューションはたくさんあります。考慮すべきいくつかのオプション:

  • 既存のサービスを維持し、限られた数のリクエストを新しく更新されたサービスにルーティングします。期待される機能を確認した後でのみ、すべてのリクエストを移行します。

  • メンテナンス期間中のトークンリクエストの数を減らします。

    • メンテナンス期間をアクセストークンの有効期間よりも短く制限します。

    • アクセストークンの有効期間を一時的に延長します。

      1. トークンの有効期間をメンテナンス期間より長くします。
      2. アクセストークンの有効期間の2倍の期間待機し、ユーザーが短期間のトークンをより長い期間のトークンと交換できるようにします。
      3. メンテナンスを入力してください。
      4. 503エラーコードと空の本文でトークンリクエストに応答します。
      5. メンテナンスを終了します。
      6. トークンの有効期間を通常に戻します。

Google に登録する

OAuth 2.0 設定の詳細と、アカウントのリンクを有効にするための認証情報を共有する必要があります。詳細については、登録をご覧ください。