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_PROJECT_ID パス パラメータは、登録時に構成する ID です。

  • URL: https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
  • サンドボックス URL: https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_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

セキュリティ イベント トークンのクレーム

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

申し立て 説明
iss 発行者クレーム: 登録時に Google と共有される、お客様がホストする URL です。
aud オーディエンス クレーム: JWT の受信者として Google を識別します。google_account_linking に設定する必要があります。
jti JWT ID クレーム: セキュリティ イベント トークンごとに生成する一意の ID です。
iat 発行日時クレーム: これは、このセキュリティ イベント トークンが作成された時刻を表す NumericDate 値です。
toe イベント クレームの時刻: トークンが取り消された時刻を表す 省略可能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
  • その他: codestateaccess_tokentoken_type

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

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