ID 공급업체(IdP)의 사용자 인증 정보를 사용하여 사용자를 로그인 또는 가입 처리합니다. 이는 IdP 사용자 인증 정보를 수동으로 제공하거나 accounts.createAuthUri의 승인 요청을 통해 얻은 승인 응답을 제공하여 실행됩니다. 로그인에 성공하면 인증된 사용자에게 새 Identity Platform ID 토큰과 갱신 토큰이 발급됩니다.
사용자가 이전에 동일한 계정으로 IdP에 로그인한 적이 없는 경우 새 Identity Platform 사용자 계정이 생성됩니다. 또한 '이메일 주소당 하나의 계정' 설정이 사용 설정된 경우 새 사용자 계정을 만들려면 동일한 이메일 주소를 사용하는 기존 Identity Platform 사용자 계정이 없어야 합니다.
Google Cloud 프로젝트를 식별하려면 요청에 API 키가 필요합니다.
HTTP 요청
POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp
URL은 gRPC 트랜스코딩 구문을 사용합니다.
요청 본문
요청 본문에는 다음과 같은 구조의 데이터가 포함됩니다.
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 사용자 인증 정보를 사용하여 트위터 제공업체에 로그인하는 경우 access_token |
pendingIdToken |
|
returnRefreshToken |
가능한 경우 IdP에서 OAuth 갱신 토큰을 반환할지 여부입니다. |
sessionId |
이전 accounts.createAuthUri 호출에서 반환된 세션 ID입니다. 이 필드는 세션 고정 공격을 방지하기 위해 해당 세션 ID를 기준으로 확인됩니다. 사용자가 이전 accounts.createAuthUri 승인 요청의 승인 응답으로 로그인하는 경우 필요합니다. |
delegatedProjectNumber |
|
idToken |
유효한 Identity Platform ID 토큰 성공하면 IdP의 사용자 계정이 이 ID 토큰으로 표시된 계정에 연결됩니다. |
returnSecureToken |
항상 참이어야 합니다. |
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 |
IdP의 이메일 주소와 다른 경우 사용자의 Identity Platform 계정의 기본 (최상위) 이메일 주소입니다. '이메일 주소당 계정 1개' 설정이 사용 설정된 경우에만 표시됩니다. |
localId |
인증된 Identity Platform 사용자의 ID입니다. 응답에 항상 표시됩니다. |
emailRecycled |
동일한 이메일 주소를 사용하지만 동일한 IdP의 다른 계정에 연결된 기존 Identity Platform 사용자 계정이 있는지 여부입니다. '이메일 주소당 계정 1개' 설정이 사용 설정되어 있고 IdP의 이메일 주소가 확인된 경우에만 표시됩니다. |
displayName |
IdP의 사용자 계정에 대한 표시 이름입니다. |
idToken |
인증된 사용자의 Identity Platform ID 토큰입니다. |
context |
인증 요청과 IdP의 콜백 간에 컨텍스트 정보를 유지하는 데 사용되는 accounts.createAuthUri에 설정된 불투명 문자열입니다. |
verifiedProvider[] |
사용자가 |
needConfirmation |
IdP에 로그인한 현재 계정과 이메일 주소가 동일한 기존 Identity Platform 사용자 계정이 있는지 여부와 IdP에서 계정의 이메일 주소가 인증되지 않았는지 여부입니다. 사용자는 기존 Identity Platform 계정에 로그인한 후 IdP의 현재 사용자 인증 정보를 해당 계정에 연결해야 합니다. '이메일 주소당 계정 1개' 설정이 사용 설정된 경우에만 표시됩니다. |
oauthAccessToken |
IdP의 OAuth 액세스 토큰(있는 경우)입니다. |
oauthRefreshToken |
IdP의 OAuth 2.0 갱신 토큰( |
oauthExpireIn |
IdP의 OAuth 액세스 토큰이 만료될 때까지의 시간(초)입니다. |
oauthAuthorizationCode |
OAuth 2.0 승인 코드(있는 경우) Google 제공업체에만 표시됩니다. |
needEmail |
|
oauthTokenSecret |
IdP의 OAuth 1.0 토큰 보안 비밀(있는 경우)입니다. 트위터 제공업체에만 표시됩니다. |
refreshToken |
인증된 사용자의 Identity Platform 갱신 토큰입니다. |
expiresIn |
Identity Platform ID 토큰이 만료되기 전까지 남은 시간(초)입니다. |
oauthIdToken |
IdP의 OpenID Connect ID 토큰(있는 경우)입니다. |
screenName |
트위터 IdP의 사용자 계정의 스크린 이름 또는 GitHub IdP의 사용자 계정의 로그인 이름입니다. |
rawUserInfo |
IdP의 사용자 계정에 해당하는 모든 데이터가 포함된 문자열화된 JSON 응답입니다. |
errorMessage |
|
isNewUser |
인증된 사용자의 새 Identity Platform 계정이 생성되었는지 여부입니다. |
kind |
|
pendingToken |
사용자가 로그인하는 IdP의 사용자 인증 정보로 사용할 수 있는 불투명 문자열입니다. 여기에서 가져온 대기 중인 토큰은 향후 accounts.signInWithIdp 요청에서 설정하여 동일한 사용자를 IdP로 다시 로그인할 수 있습니다. |
tenantId |
요청의 |
mfaPendingCredential |
사용자가 첫 번째 요소 인증을 통과했음을 증명하는 역할을 하는 불투명 문자열입니다. |
mfaInfo[] |
계정에 사용 설정된 다중 인증 제공업체에 관한 정보입니다. 사용자가 다중 인증을 사용하여 로그인을 완료해야 하는 경우 표시합니다. |
승인 범위
다음 OAuth 범위 중 하나가 필요합니다.
https://www.googleapis.com/auth/identitytoolkit
https://www.googleapis.com/auth/cloud-platform
자세한 내용은 Authentication Overview를 참고하세요.