Google Account Linking API

このリファレンス ページでは、OAuth ベースのアカウント リンク プロセス中にアプリが使用する、Google が提供するエンドポイントとインターフェースについて説明します。

前提条件と標準

これらの Google エンドポイントと正常にやり取りするには、統合が次の標準に準拠している必要があります。

  • OAuth 2.0: RFC 6749 に準拠しています。
  • JSON Web Token(JWT): RFC 7519 に準拠(Streamlined Linking と RISC 用)。
  • セキュリティ イベント トークン: RFC 8417 に準拠(RISC の場合)。
  • HTTPS: すべてのリクエストは安全な HTTPS 接続で行う必要があります。

OAuth リダイレクト URI

認証と同意が成功した後に、サービスがユーザーのブラウザをリダイレクトするエンドポイント。YOUR_PARTNER_ID パスパラメータは、登録時に構成された Google アカウントのリンク パートナー ID(またはプロジェクト ID)です。

  • URL: https://oauth-redirect.googleusercontent.com/r/YOUR_PARTNER_ID
  • サンドボックス URL: https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PARTNER_ID

  • メソッド: GET(ブラウザ リダイレクトを使用)

リクエスト パラメータ

ユーザーを Google にリダイレクトするときは、URL にパラメータを追加する必要があります。使用する OAuth フローに応じて、これらのパラメータはクエリ文字列(認可コードフロー)または URL フラグメント(暗黙的フロー)としてフォーマットされます。

パラメータ 説明
code (認証コード フローで必須)サービスによって生成された認証コード。
state (必須)Google から最初に受け取った変更されていない state 値。
access_token (暗黙的フローで必須)サービスによって生成された有効期間の長いアクセス トークン。
token_type (暗黙的フローで必須)bearer である必要があります。

エラー レスポンス

OAuth リダイレクト URI へのリクエストの形式が正しくない場合は、HTTP 400 Bad Request エラーが返されます。レスポンスの本文には、次の構造の JSON オブジェクトが含まれます。

フィールド 説明
sendPostBody JS が POST で redirectUri にリダイレクトするかどうかを決定します。通常、このシナリオでは false です。
errorMessage リダイレクトを完了できない場合にクライアントに表示されるエラー メッセージ。欠落したフラグメントの場合、これは "A URI fragment or query string must be set." です。

OAuth 2.0 エラー レスポンス

ユーザーが同意を拒否した場合や、サービスでエラーが発生した場合は、サービスは標準の OAuth 2.0 エラー パラメータ(error=access_denied など)を使用して、ユーザーを OAuth リダイレクト URI にリダイレクトする必要があります。Google はこれらのパラメータを処理し、適切なエラー画面をユーザーに表示します。

RISC API(オプション)

サービスで使用され、ユーザーが RISC プロトコルを使用してプラットフォームでアカウントのリンクを解除したときに、Google に事前に通知し、両方のプラットフォームの同期を維持します。

  • URL: https://risc.googleapis.com/v1/events:publish
  • メソッド: POST
  • 認証: 適切な権限を持つ Google サービス アカウント トークンが必要です。
  • Content-Type: application/json

Security Event Token のクレーム

トークンの取り消しイベントを Google に通知するために使用する Security Event Token は、次の表の要件に準拠している必要があります。

申し立て 説明
iss 発行者クレーム: お客様がホストする URL で、登録時に Google と共有されます。
aud Audience クレーム: JWT の受信者として Google を識別します。google_account_linking に設定する必要があります。
jti JWT ID クレーム: セキュリティ イベント トークンごとに生成する一意の ID です。
iat 発行日時クレーム: このセキュリティ イベント トークンが作成された時刻を表す NumericDate 値です。
toe Time of Event Claim: トークンが取り消された時刻を表す省略可能な NumericDate 値です。
exp 有効期限のクレーム: この通知の原因となったイベントはすでに発生しているため、このフィールドは含めないでください。
events セキュリティ イベント クレーム: これは JSON オブジェクトであり、次のフィールドを含むトークン取り消しイベントを 1 つだけ含める必要があります。

  • subject_type: これは oauth_token に設定する必要があります。
  • token_type: 取り消されるトークンのタイプ(access_token または refresh_token)。
  • token_identifier_alg: トークンのエンコードに使用されるアルゴリズム。hash_SHA512_double である必要があります。
  • token: 取り消されたトークンの ID。

フィールドのタイプと形式の詳細については、JSON ウェブトークン(JWT)をご覧ください。

アプリ切り替えの「フリップバック」インターフェース

アプリ切り替えの場合、モバイルアプリは Google アプリに認証コードまたはアクセス トークンを返す必要があります。

Android(インテントの結果)

アプリがインテントを使用して開かれます。同意後、処理が完了し、結果が Google に返されます。詳細については、Android 実装ガイドをご覧ください。

  • アクション: com.google.android.gms.auth.CODE_AVAILABLE
  • その他: code、state、access_token、token_type。

アプリは、カスタム URL スキームまたは HTTPS ユニバーサル リンクを使用して Google を開きます。詳しくは、iOS 実装ガイドをご覧ください。

  • 形式: <return_url>?code=AUTHORIZATION_CODE&state=STATE_STRING