Method: accounts.signInWithIdp

ID プロバイダ(IdP)の認証情報を使用してユーザーをログインまたは登録します。これは、IdP 認証情報を手動で指定するか、accounts.createAuthUri の認可リクエストから取得した認可レスポンスを指定することで行います。ログインに成功すると、認証されたユーザーに新しい Identity Platform ID トークンと更新トークンが発行されます。

ユーザーが同じアカウントで IdP にログインしたことがない場合、新しい Identity Platform ユーザー アカウントが作成されます。また、[1 つのメールアドレスにつき 1 つのアカウント] 設定が有効になっている場合、新しいユーザー アカウントを作成するために、同じメールアドレスの既存の Identity Platform ユーザー アカウントが存在しない必要があります。

Google Cloud プロジェクトを識別するには、リクエストに API キーが必要です。

HTTP リクエスト

POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp

この URL は gRPC Transcoding 構文を使用します。

リクエストの本文

リクエストの本文には、次の構造のデータが含まれます。

JSON 表現
{
  "requestUri": string,
  "postBody": string,
  "pendingIdToken": string,
  "returnRefreshToken": boolean,
  "sessionId": string,
  "delegatedProjectNumber": string,
  "idToken": string,
  "returnSecureToken": boolean,
  "returnIdpCredential": boolean,
  "autoCreate": boolean,
  "tenantId": string,
  "pendingToken": string
}
フィールド
requestUri

string

必須。IdP がユーザーをリダイレクトする URL。ユーザーが手動で指定した IdP 認証情報でログインする場合は、http://localhost に設定できます。

postBody

string

ユーザーが、以前の accounts.createAuthUri 認可リクエストで取得した認可レスポンスでログインしている場合、これは IdP からの HTTP POST コールバックの本文です(存在する場合)。

それ以外の場合、ユーザーが手動で提供した IdP 認証情報でログインする場合は、認証情報(OAuth 2.0 IdP の ID トークンやアクセス トークンなど)と、認証情報を発行した IdP のプロバイダ ID を含む URL エンコードされたフォームである必要があります。

たとえば、ユーザーが Google ID トークンを使用して Google プロバイダにログインする場合は、id_token=[GOOGLE_ID_TOKEN]&providerId=google.com に設定します。ここで、[GOOGLE_ID_TOKEN] は Google ID トークンに置き換えます。

ユーザーが Facebook 認証トークンを使用して Facebook プロバイダにログインする場合は、id_token=[FACEBOOK_AUTHENTICATION_TOKEN]&providerId=facebook. com&nonce= [NONCE] に設定します。ここで、[FACEBOOK_AUTHENTICATION_TOKEN] は Facebook 認証トークンに置き換えます。トークンの検証にはノンスが必要です。ノンスが指定されていない場合、リクエストは失敗します。

ユーザーが Facebook アクセス トークンを使用して Facebook プロバイダにログインする場合は、access_token=[FACEBOOK_ACCESS_TOKEN]&providerId=facebook. com に設定します。ここで、[FACEBOOK_ACCESS_TOKEN] は Facebook アクセス トークンに置き換えます。

ユーザーが Twitter OAuth 1.0 認証情報を使用して Twitter プロバイダにログインする場合は、access_token=[TWITTER_ACCESS_TOKEN]&oauthTokenSecret= [TWITTER_TOKEN_SECRET]&providerId=twitter.com に設定します。ここで、[TWITTER_ACCESS_TOKEN][TWITTER_TOKEN_SECRET] は、Twitter OAuth アクセス トークンと Twitter OAuth トークン シークレットに置き換える必要があります。

pendingIdToken
(deprecated)

string

returnRefreshToken

boolean

IdP から OAuth 更新トークンを返すかどうか(使用可能な場合)。

sessionId

string

以前の accounts.createAuthUri 呼び出しから返されたセッション ID。このフィールドは、セッション修正攻撃を防ぐために、そのセッション ID と照合されます。ユーザーが以前の accounts.createAuthUri 認可リクエストの認可レスポンスでログインする場合に必須です。

delegatedProjectNumber
(deprecated)

string (int64 format)

idToken

string

有効な Identity Platform ID トークン。承認されると、IdP のユーザー アカウントが、この ID トークンによって表されるアカウントにリンクされます。

returnSecureToken

boolean

常に true を指定します。

returnIdpCredential

boolean

FEDERATED_USER_ID_ALREADY_LINKEDEMAIL_EXISTS のエラーで IdP から OAuth 認証情報を返すかどうか。

autoCreate
(deprecated)

boolean

tenantId

string

ユーザーがログインしている Identity Platform テナントの ID。設定されていない場合、ユーザーはデフォルトの Identity Platform プロジェクトにログインします。

pendingToken

string

以前の accounts.signInWithIdp レスポンスの不透明な文字列。設定すると、前の accounts.signInWithIdp オペレーションのログイン オペレーションを繰り返すことができます。これは、ユーザーが以前の連携ログイン試行の一環としてアカウント情報を確認する必要がある場合や、アカウントのリンクを行う必要がある場合に表示されます。

レスポンスの本文

accounts.signInWithIdp のレスポンス メッセージ。

成功した場合、レスポンスの本文には次の構造のデータが含まれます。

JSON 表現
{
  "federatedId": string,
  "providerId": string,
  "email": string,
  "emailVerified": boolean,
  "firstName": string,
  "fullName": string,
  "lastName": string,
  "nickName": string,
  "language": string,
  "timeZone": string,
  "photoUrl": string,
  "dateOfBirth": string,
  "inputEmail": string,
  "originalEmail": string,
  "localId": string,
  "emailRecycled": boolean,
  "displayName": string,
  "idToken": string,
  "context": string,
  "verifiedProvider": [
    string
  ],
  "needConfirmation": boolean,
  "oauthAccessToken": string,
  "oauthRefreshToken": string,
  "oauthExpireIn": integer,
  "oauthAuthorizationCode": string,
  "needEmail": boolean,
  "oauthTokenSecret": string,
  "refreshToken": string,
  "expiresIn": string,
  "oauthIdToken": string,
  "screenName": string,
  "rawUserInfo": string,
  "errorMessage": string,
  "isNewUser": boolean,
  "kind": string,
  "pendingToken": string,
  "tenantId": string,
  "mfaPendingCredential": string,
  "mfaInfo": [
    {
      object (MfaEnrollment)
    }
  ]
}
フィールド
federatedId

string

IdP でのユーザーのアカウント ID。レスポンスには常に存在します。

providerId

string

ユーザーがログインしている IdP のプロバイダ ID。レスポンスには常に存在します。

email

string

IdP のユーザー アカウントのメールアドレス。

emailVerified

boolean

ユーザー アカウントのメールアドレスが確認済みかどうか。

firstName

string

IdP のユーザー アカウントの名。

fullName

string

IdP のユーザー アカウントの氏名。

lastName

string

IdP のユーザー アカウントの姓。

nickName

string

IdP のユーザー アカウントのニックネーム。

language

string

IdP のユーザー アカウントの言語設定。

timeZone

string

IdP のユーザー アカウントのタイムゾーン。

photoUrl

string

IdP のユーザーのプロフィール写真の URL。

dateOfBirth

string

IdP のユーザー アカウントの生年月日。

inputEmail
(deprecated)

string

originalEmail

string

ユーザーの Identity Platform アカウントのメインの(トップレベルの)メールアドレス(IdP のメールアドレスと異なる場合)。[1 つのメールアドレスにつき 1 つのアカウント] の設定が有効になっている場合にのみ存在します。

localId

string

認証された Identity Platform ユーザーの ID。レスポンスには常に存在します。

emailRecycled

boolean

同じメールアドレスで、同じ IdP の別のアカウントにリンクされている既存の Identity Platform ユーザー アカウントがあるかどうか。[1 つのメールアドレスにつき 1 つのアカウント] の設定が有効で、IdP のメールアドレスが確認されている場合にのみ存在します。

displayName

string

IdP でのユーザーのアカウントの表示名。

idToken

string

認証済みユーザーの Identity Platform ID トークン。

context

string

accounts.createAuthUri で設定される不透明な文字列。認証リクエストと IdP からのコールバック間のコンテキスト情報を維持するために使用されます。

verifiedProvider[]

string

needConfirmation エラーを解決するためにユーザーがログインできるプロバイダ ID のリスト。needConfirmationtrue に設定されている場合にのみ存在します。

needConfirmation

boolean

IdP でログインしている現在のアカウントと同じメールアドレスを持つ既存の Identity Platform ユーザー アカウントが存在するかどうか、およびアカウントのメールアドレスが IdP で確認されていないかどうか。ユーザーは、既存の Identity Platform アカウントにログインし、IdP の現在の認証情報をリンクする必要があります。[1 つのメールアドレスにつき 1 つのアカウント] の設定が有効になっている場合にのみ存在します。

oauthAccessToken

string

IdP の OAuth アクセス トークン(使用可能な場合)。

oauthRefreshToken

string

IdP の OAuth 2.0 リフレッシュ トークン(returnRefreshTokentrue に設定されている場合)。

oauthExpireIn

integer

IdP の OAuth アクセス トークンが期限切れになるまでの秒数。

oauthAuthorizationCode

string

OAuth 2.0 認証コード(利用可能な場合)。Google プロバイダでのみ存在します。

needEmail
(deprecated)

boolean

oauthTokenSecret

string

IdP の OAuth 1.0 トークン シークレット(使用可能な場合)。Twitter プロバイダでのみ存在します。

refreshToken

string

認証されたユーザーの Identity Platform 更新トークン。

expiresIn

string (int64 format)

Identity Platform ID トークンが期限切れになるまでの秒数。

oauthIdToken

string

IdP の OpenID Connect ID トークン(使用可能な場合)。

screenName

string

Twitter IdP のユーザー アカウントのスクリーン名、または GitHub IdP のユーザー アカウントのログイン名。

rawUserInfo

string

IdP のユーザー アカウントに対応するすべてのデータを含む、文字列化された JSON レスポンス。

errorMessage

string

returnIdpCredentialtrue に設定され、FEDERATED_USER_ID_ALREADY_LINKED エラーまたは EMAIL_EXISTS エラーが発生した場合に返されるエラー メッセージ。このフィールドの値は FEDERATED_USER_ID_ALREADY_LINKED または EMAIL_EXISTS です。

isNewUser

boolean

認証されたユーザーに新しい Identity Platform アカウントが作成されたかどうか。

kind
(deprecated)

string

pendingToken

string

ユーザーがログインしている IdP の認証情報として使用できる不透明な文字列。ここで取得した保留中のトークンは、今後の accounts.signInWithIdp リクエストで設定して、同じユーザーを IdP で再度ログインさせることができます。

tenantId

string

リクエストの tenantId フィールドの値。

mfaPendingCredential

string

ユーザーが第 1 要素認証に正常に合格したことを証明する不透明な文字列。

mfaInfo[]

object (MfaEnrollment)

アカウントで有効になっている多要素認証プロバイダの情報。ユーザーが多要素認証を使用してログインを完了する必要がある場合に表示します。

認可スコープ

以下のいずれかの OAuth スコープが必要です。

  • https://www.googleapis.com/auth/identitytoolkit
  • https://www.googleapis.com/auth/cloud-platform

詳細については、Authentication Overview をご覧ください。