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 |
必須。IdP がユーザーをリダイレクトする URL。ユーザーが手動で指定した IdP 認証情報でログインする場合は、 |
postBody |
ユーザーが、以前の accounts.createAuthUri 認可リクエストで取得した認可レスポンスでログインしている場合、これは IdP からの HTTP POST コールバックの本文です(存在する場合)。 それ以外の場合、ユーザーが手動で提供した IdP 認証情報でログインする場合は、認証情報(OAuth 2.0 IdP の ID トークンやアクセス トークンなど)と、認証情報を発行した IdP のプロバイダ ID を含む URL エンコードされたフォームである必要があります。 たとえば、ユーザーが Google ID トークンを使用して Google プロバイダにログインする場合は、id_token ユーザーが Facebook 認証トークンを使用して Facebook プロバイダにログインする場合は、id_token ユーザーが Facebook アクセス トークンを使用して Facebook プロバイダにログインする場合は、access_token ユーザーが Twitter OAuth 1.0 認証情報を使用して Twitter プロバイダにログインする場合は、access_token |
pendingIdToken |
|
returnRefreshToken |
IdP から OAuth 更新トークンを返すかどうか(使用可能な場合)。 |
sessionId |
以前の accounts.createAuthUri 呼び出しから返されたセッション ID。このフィールドは、セッション修正攻撃を防ぐために、そのセッション ID と照合されます。ユーザーが以前の accounts.createAuthUri 認可リクエストの認可レスポンスでログインする場合に必須です。 |
delegatedProjectNumber |
|
idToken |
有効な Identity Platform ID トークン。承認されると、IdP のユーザー アカウントが、この ID トークンによって表されるアカウントにリンクされます。 |
returnSecureToken |
常に true を指定します。 |
returnIdpCredential |
|
autoCreate |
|
tenantId |
ユーザーがログインしている Identity Platform テナントの ID。設定されていない場合、ユーザーはデフォルトの Identity Platform プロジェクトにログインします。 |
pendingToken |
以前の 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 ( |
フィールド | |
---|---|
federatedId |
IdP でのユーザーのアカウント ID。レスポンスには常に存在します。 |
providerId |
ユーザーがログインしている IdP のプロバイダ ID。レスポンスには常に存在します。 |
email |
IdP のユーザー アカウントのメールアドレス。 |
emailVerified |
ユーザー アカウントのメールアドレスが確認済みかどうか。 |
firstName |
IdP のユーザー アカウントの名。 |
fullName |
IdP のユーザー アカウントの氏名。 |
lastName |
IdP のユーザー アカウントの姓。 |
nickName |
IdP のユーザー アカウントのニックネーム。 |
language |
IdP のユーザー アカウントの言語設定。 |
timeZone |
IdP のユーザー アカウントのタイムゾーン。 |
photoUrl |
IdP のユーザーのプロフィール写真の URL。 |
dateOfBirth |
IdP のユーザー アカウントの生年月日。 |
inputEmail |
|
originalEmail |
ユーザーの Identity Platform アカウントのメインの(トップレベルの)メールアドレス(IdP のメールアドレスと異なる場合)。[1 つのメールアドレスにつき 1 つのアカウント] の設定が有効になっている場合にのみ存在します。 |
localId |
認証された Identity Platform ユーザーの ID。レスポンスには常に存在します。 |
emailRecycled |
同じメールアドレスで、同じ IdP の別のアカウントにリンクされている既存の Identity Platform ユーザー アカウントがあるかどうか。[1 つのメールアドレスにつき 1 つのアカウント] の設定が有効で、IdP のメールアドレスが確認されている場合にのみ存在します。 |
displayName |
IdP でのユーザーのアカウントの表示名。 |
idToken |
認証済みユーザーの Identity Platform ID トークン。 |
context |
accounts.createAuthUri で設定される不透明な文字列。認証リクエストと IdP からのコールバック間のコンテキスト情報を維持するために使用されます。 |
verifiedProvider[] |
|
needConfirmation |
IdP でログインしている現在のアカウントと同じメールアドレスを持つ既存の Identity Platform ユーザー アカウントが存在するかどうか、およびアカウントのメールアドレスが IdP で確認されていないかどうか。ユーザーは、既存の Identity Platform アカウントにログインし、IdP の現在の認証情報をリンクする必要があります。[1 つのメールアドレスにつき 1 つのアカウント] の設定が有効になっている場合にのみ存在します。 |
oauthAccessToken |
IdP の OAuth アクセス トークン(使用可能な場合)。 |
oauthRefreshToken |
IdP の OAuth 2.0 リフレッシュ トークン( |
oauthExpireIn |
IdP の OAuth アクセス トークンが期限切れになるまでの秒数。 |
oauthAuthorizationCode |
OAuth 2.0 認証コード(利用可能な場合)。Google プロバイダでのみ存在します。 |
needEmail |
|
oauthTokenSecret |
IdP の OAuth 1.0 トークン シークレット(使用可能な場合)。Twitter プロバイダでのみ存在します。 |
refreshToken |
認証されたユーザーの Identity Platform 更新トークン。 |
expiresIn |
Identity Platform ID トークンが期限切れになるまでの秒数。 |
oauthIdToken |
IdP の OpenID Connect ID トークン(使用可能な場合)。 |
screenName |
Twitter IdP のユーザー アカウントのスクリーン名、または GitHub IdP のユーザー アカウントのログイン名。 |
rawUserInfo |
IdP のユーザー アカウントに対応するすべてのデータを含む、文字列化された JSON レスポンス。 |
errorMessage |
|
isNewUser |
認証されたユーザーに新しい Identity Platform アカウントが作成されたかどうか。 |
kind |
|
pendingToken |
ユーザーがログインしている IdP の認証情報として使用できる不透明な文字列。ここで取得した保留中のトークンは、今後の accounts.signInWithIdp リクエストで設定して、同じユーザーを IdP で再度ログインさせることができます。 |
tenantId |
リクエストの |
mfaPendingCredential |
ユーザーが第 1 要素認証に正常に合格したことを証明する不透明な文字列。 |
mfaInfo[] |
アカウントで有効になっている多要素認証プロバイダの情報。ユーザーが多要素認証を使用してログインを完了する必要がある場合に表示します。 |
認可スコープ
以下のいずれかの OAuth スコープが必要です。
https://www.googleapis.com/auth/identitytoolkit
https://www.googleapis.com/auth/cloud-platform
詳細については、Authentication Overview をご覧ください。