Method: accounts.signInWithIdp

Faz login ou registra um usuário usando credenciais de um provedor de identidade (IdP). Isso é feito fornecendo manualmente uma credencial de IdP ou a resposta de autorização obtida pela solicitação de autorização de accounts.createAuthUri. Se o login for bem-sucedido, um novo token de ID e de atualização do Identity Platform será emitido para o usuário autenticado.

Uma nova conta de usuário do Identity Platform será criada se o usuário não tiver feito login no IdP com a mesma conta. Além disso, quando a configuração "Uma conta por endereço de e-mail" está ativada, não pode haver uma conta de usuário do Identity Platform com o mesmo endereço de e-mail para que uma nova conta de usuário seja criada.

Uma chave de API é necessária na solicitação para identificar o projeto do Google Cloud.

Solicitação HTTP

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

O URL usa a sintaxe de transcodificação gRPC.

Corpo da solicitação

O corpo da solicitação contém dados com a seguinte estrutura:

Representação 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
}
Campos
requestUri

string

Obrigatório. O URL para o qual o IdP redireciona o usuário. Ele pode ser definido como http://localhost se o usuário estiver fazendo login com uma credencial de IdP fornecida manualmente.

postBody

string

Se o usuário estiver fazendo login com uma resposta de autorização obtida por uma solicitação de autorização accounts.createAuthUri anterior, este será o corpo do callback POST HTTP do IdP, se presente.

Caso contrário, se o usuário estiver fazendo login com uma credencial de IdP fornecida manualmente, ela precisa ser um formulário codificado em URL que contenha a credencial (por exemplo, um token de ID ou de acesso para IdPs do OAuth 2.0) e o ID do provedor do IdP que emitiu a credencial.

Por exemplo, se o usuário fizer login no provedor do Google usando um token de ID do Google, ele será definido como id_token=[GOOGLE_ID_TOKEN]&providerId=google.com, em que [GOOGLE_ID_TOKEN] será substituído pelo token de ID do Google.

Se o usuário estiver fazendo login no provedor do Facebook usando um token de autenticação do Facebook, ele precisa ser definido como id_token=[FACEBOOK_AUTHENTICATION_TOKEN]&providerId=facebook. com&nonce= [NONCE], em que [FACEBOOK_AUTHENTICATION_TOKEN] precisa ser substituído pelo token de autenticação do Facebook. O nonce é necessário para validar o token. A solicitação vai falhar se nenhum valor de uso único for fornecido.

Se o usuário estiver fazendo login no provedor do Facebook usando um token de acesso do Facebook, ele precisa ser definido como access_token=[FACEBOOK_ACCESS_TOKEN]&providerId=facebook. com, em que [FACEBOOK_ACCESS_TOKEN] precisa ser substituído pelo token de acesso do Facebook.

Se o usuário estiver fazendo login no provedor do Twitter usando uma credencial do Twitter OAuth 1.0, ela precisa ser definida como access_token=[TWITTER_ACCESS_TOKEN]&oauthTokenSecret= [TWITTER_TOKEN_SECRET]&providerId=twitter.com, em que [TWITTER_ACCESS_TOKEN] e [TWITTER_TOKEN_SECRET] precisam ser substituídos pelo token de acesso e pela chave secreta do Twitter OAuth, respectivamente.

pendingIdToken
(deprecated)

string

returnRefreshToken

boolean

Indica se é necessário retornar o token de atualização do OAuth do provedor de identidade, se disponível.

sessionId

string

O ID da sessão retornado de uma chamada accounts.createAuthUri anterior. Esse campo é verificado com esse ID para evitar ataques de fixação de sessão. Obrigatório se o usuário estiver fazendo login com uma resposta de autorização de uma solicitação de autorização accounts.createAuthUri anterior.

delegatedProjectNumber
(deprecated)

string (int64 format)

idToken

string

Um token de ID do Identity Platform válido. Se for aprovado, a conta do usuário no IdP será vinculada à conta representada por esse token de identificação.

returnSecureToken

boolean

Precisa ser sempre verdadeiro.

returnIdpCredential

boolean

Define se as credenciais do OAuth do provedor de identidade serão retornadas ou não nos seguintes erros: FEDERATED_USER_ID_ALREADY_LINKED e EMAIL_EXISTS.

autoCreate
(deprecated)

boolean

tenantId

string

O ID do locatário do Identity Platform em que o usuário está fazendo login. Se não for definido, o usuário vai fazer login no projeto padrão do Identity Platform.

pendingToken

string

Uma string opaca de uma resposta anterior de accounts.signInWithIdp. Se definido, ele pode ser usado para repetir a operação de login da operação accounts.signInWithIdp anterior. Isso pode acontecer se o usuário precisar confirmar as informações da conta como parte de uma tentativa anterior de login federado ou realizar a vinculação da conta.

Corpo da resposta

Mensagem de resposta para accounts.signInWithIdp.

Se bem-sucedido, o corpo da resposta incluirá dados com a estrutura a seguir:

Representação 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)
    }
  ]
}
Campos
federatedId

string

O ID da conta do usuário no IdP. Sempre presente na resposta.

providerId

string

O ID do provedor do IdP em que o usuário está fazendo login. Sempre presente na resposta.

email

string

O endereço de e-mail da conta do usuário no IdP.

emailVerified

boolean

Indica se o endereço de e-mail da conta de usuário foi verificado.

firstName

string

O nome da conta do usuário no IdP.

fullName

string

O nome completo da conta do usuário no IdP.

lastName

string

O sobrenome da conta do usuário no IdP.

nickName

string

O apelido da conta do usuário no IdP.

language

string

A preferência de idioma da conta do usuário no IdP.

timeZone

string

O fuso horário da conta do usuário no IdP.

photoUrl

string

O URL da foto do perfil do usuário no IdP.

dateOfBirth

string

A data de nascimento da conta do usuário no IdP.

inputEmail
(deprecated)

string

originalEmail

string

O endereço de e-mail principal (de nível superior) da conta do usuário no Identity Platform, se for diferente do endereço de e-mail no IdP. Só aparece quando a configuração "Uma conta por endereço de e-mail" está ativada.

localId

string

O ID do usuário autenticado do Identity Platform. Sempre presente na resposta.

emailRecycled

boolean

Se há ou não uma conta de usuário do Identity Platform com o mesmo endereço de e-mail, mas vinculada a uma conta diferente no mesmo IdP. Só aparece quando a configuração "Uma conta por endereço de e-mail" está ativada e o endereço de e-mail no IdP está verificado.

displayName

string

O nome de exibição da conta do usuário no IdP.

idToken

string

Um token de ID do Identity Platform para o usuário autenticado.

context

string

A string opaca definida em accounts.createAuthUri, que é usada para manter informações contextuais entre a solicitação de autenticação e o callback do IdP.

verifiedProvider[]

string

Uma lista de IDs de provedores em que o usuário pode fazer login para resolver um erro needConfirmation. Só aparece se needConfirmation estiver definido como true.

needConfirmation

boolean

Se existe ou não uma conta de usuário do Identity Platform com o mesmo endereço de e-mail da conta atual conectada no IdP e se o endereço de e-mail da conta não está verificado no IdP. O usuário precisa fazer login na conta do Identity Platform e vincular a credencial atual do IdP a ela. Só aparece quando a configuração "Uma conta por endereço de e-mail" está ativada.

oauthAccessToken

string

O token de acesso do OAuth do provedor de identidade, se disponível.

oauthRefreshToken

string

O token de atualização OAuth 2.0 do provedor de identidade, se disponível e returnRefreshToken estiver definido como true.

oauthExpireIn

integer

O número de segundos até o token de acesso OAuth do IdP expirar.

oauthAuthorizationCode

string

O código de autorização OAuth 2.0, se disponível. Presente apenas para o provedor do Google.

needEmail
(deprecated)

boolean

oauthTokenSecret

string

O secret do token OAuth 1.0 do provedor de identidade, se disponível. Presente apenas para o provedor do Twitter.

refreshToken

string

Um token de atualização do Identity Platform para o usuário autenticado.

expiresIn

string (int64 format)

O número de segundos até o token de ID do Identity Platform expirar.

oauthIdToken

string

O token de ID do OpenID Connect do IdP, se disponível.

screenName

string

O nome de exibição da conta do usuário no IdP do Twitter ou o nome de login da conta do usuário no IdP do GitHub.

rawUserInfo

string

A resposta JSON em string que contém todos os dados correspondentes à conta do usuário no IdP.

errorMessage

string

A mensagem de erro retornada se returnIdpCredential for definido como true e o erro FEDERATED_USER_ID_ALREADY_LINKED ou EMAIL_EXISTS for encontrado. O valor desse campo é FEDERATED_USER_ID_ALREADY_LINKED ou EMAIL_EXISTS.

isNewUser

boolean

Se uma nova conta do Identity Platform foi criada para o usuário autenticado.

kind
(deprecated)

string

pendingToken

string

Uma string opaca que pode ser usada como uma credencial do IdP em que o usuário está fazendo login. O token pendente recebido aqui pode ser definido em uma solicitação accounts.signInWithIdp futura para fazer login do mesmo usuário com o IdP novamente.

tenantId

string

O valor do campo tenantId na solicitação.

mfaPendingCredential

string

Uma string opaca que funciona como prova de que o usuário passou pela autenticação do primeiro fator.

mfaInfo[]

object (MfaEnrollment)

Informações sobre quais provedores de autenticação multifator estão ativados para a conta. Apresente se o usuário precisar concluir o login usando a autenticação multifator.

Escopos de autorização

Requer um dos seguintes escopos do OAuth:

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

Para mais informações, consulte Authentication Overview.