Usar a API REST

Este documento mostra como realizar operações comuns do utilizador, como iniciar sessão e trabalhar com tokens, através da API REST do Identity Platform.

Antes de começar

Para usar a API REST, precisa de uma chave da API Identity Platform. Para obter uma chave:

  1. Aceda à página Fornecedores de identidade na Google Cloud consola.
    Aceda à página Fornecedores de identidade

  2. Clique em Detalhes da configuração da aplicação.

  3. Copie o campo apiKey.

Tenha em atenção que o HTTPS é obrigatório para todas as chamadas da API.

Chamar a API

Troque um token personalizado por um ID e um token de atualização

Pode trocar uma chave de autorização personalizada por uma chave de ID e uma chave de atualização emitindo um pedido HTTP POST para o ponto final signInWithCustomToken.

Método: POST

Content-Type: application/json

Ponto final
https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=[API_KEY]
Payload do corpo do pedido
Nome da propriedade Tipo Descrição
token de string Um token personalizado da Identity Platform a partir do qual criar um par de tokens de ID e de atualização.
returnSecureToken booleano Se deve ou não devolver um ID e um token de atualização. Deve ser sempre verdadeiro.
tenantId de string O ID do inquilino no qual o utilizador está a iniciar sessão. Usado apenas em multi-tenancy.
Tem de corresponder ao tenant_id no token.
Reivindicações de tokens personalizadas
Propriedade Nome Descrição
alg Algoritmo Deve ser RS256.
iss Emissor O endereço de email da conta de serviço do seu projeto.
sub Assunto O endereço de email da conta de serviço do seu projeto.
aud Público-alvo https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit
iat Hora de emissão A hora atual, em segundos desde o início da época UNIX.
exp Período de validade A hora, em segundos desde o início da época UNIX, em que o token expira. Pode ser, no máximo, 3600 segundos depois da iat.
Nota: isto só controla a hora em que o próprio token personalizado expira. No entanto, depois de iniciar sessão num utilizador através de signInWithCustomToken(), a sessão do utilizador permanece iniciada no dispositivo até que seja invalidada ou o utilizador termine sessão.
uid ID do utilizador O identificador único do utilizador, com um comprimento entre 1 e 36 carateres.
tenant_id ID do inquilino O identificador do inquilino no qual o utilizador está a iniciar sessão.
reivindicações (opcional) Reivindicações personalizadas opcionais a incluir nas variáveis auth ou request.auth das regras de segurança.
Payload de resposta
Nome da propriedade Tipo Descrição
idToken de string Um token de ID da Identity Platform gerado a partir do token personalizado fornecido.
refreshToken de string Um token de atualização da Identity Platform gerado a partir do token personalizado fornecido.
expiresIn de string O número de segundos em que o token de ID expira.

Pedido de amostra

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"token":"[CUSTOM_TOKEN]","returnSecureToken":true}'

Um pedido bem-sucedido é indicado por um código de estado HTTP 200 OK. A resposta contém o token de ID e o token de atualização da Identity Platform associados ao token personalizado.

Exemplo de resposta

{
  "idToken": "[ID_TOKEN]",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600"
}

Códigos de erro comuns

  • INVALID_CUSTOM_TOKEN: o formato do token personalizado está incorreto ou o token é inválido por algum motivo (por exemplo, expirou, assinatura inválida, etc.)
  • CREDENTIAL_MISMATCH: o token personalizado corresponde a um Google Cloud projeto diferente.

Troque um token de atualização por um token de ID

Pode atualizar um token de ID da Identity Platform emitindo um pedido HTTP POST para o ponto final securetoken.googleapis.com.

Método: POST

Content-Type: application/x-www-form-urlencoded

Ponto final
https://securetoken.googleapis.com/v1/token?key=[API_KEY]
Payload do corpo do pedido
Nome da propriedade Tipo Descrição
grant_type de string O tipo de autorização do token de atualização, sempre "refresh_token".
refresh_token de string Um token de atualização do Identity Platform.
Payload de resposta
Nome da propriedade Tipo Descrição
expires_in de string O número de segundos em que o token de ID expira.
token_type de string O tipo do token de atualização, sempre "Bearer".
refresh_token de string O token de atualização da Identity Platform fornecido no pedido ou um novo token de atualização.
id_token de string Um token de ID do Identity Platform.
user_id de string O UID correspondente ao token de ID fornecido.
project_id de string O seu Google Cloud ID do projeto.

Pedido de amostra

curl 'https://securetoken.googleapis.com/v1/token?key=[API_KEY]' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data 'grant_type=refresh_token&refresh_token=[REFRESH_TOKEN]'

Um pedido bem-sucedido é indicado por um código de estado HTTP 200 OK. A resposta contém o novo token de atualização e token de ID da Identity Platform.

Exemplo de resposta

{
  "expires_in": "3600",
  "token_type": "Bearer",
  "refresh_token": "[REFRESH_TOKEN]",
  "id_token": "[ID_TOKEN]",
  "user_id": "tRcfmLH7o2XrNELi...",
  "project_id": "1234567890"
}

Códigos de erro comuns

  • TOKEN_EXPIRED: a credencial do utilizador já não é válida. O utilizador tem de iniciar sessão novamente.
  • USER_DISABLED: a conta de utilizador foi desativada por um administrador.
  • USER_NOT_FOUND: não foi encontrado o utilizador correspondente ao token de atualização. É provável que o utilizador tenha sido eliminado.
  • A chave da API não é válida. Transmita uma chave da API válida. (chave da API inválida fornecida)
  • INVALID_REFRESH_TOKEN: foi fornecido um token de atualização inválido.
  • Payload JSON inválido recebido. Nome desconhecido "refresh_tokens": não é possível associar o parâmetro de consulta. Não foi possível encontrar o campo "refresh_tokens" na mensagem de pedido.
  • INVALID_GRANT_TYPE: o tipo de autorização especificado é inválido.
  • MISSING_REFRESH_TOKEN: nenhum token de atualização fornecido.
  • PROJECT_NUMBER_MISMATCH: o número do projeto do token de atualização não corresponde ao da chave da API fornecida.

Inscreva-se com email / palavra-passe

Pode criar um novo utilizador com email e palavra-passe enviando um pedido HTTP POST para o ponto final de autenticação signupNewUser.

Método: POST

Content-Type: application/json

Ponto final
https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]
Payload do corpo do pedido
Nome da propriedade Tipo Descrição
email de string O email do utilizador a criar.
palavra-passe de string A palavra-passe que o utilizador vai criar.
returnSecureToken booleano Se deve ou não devolver um ID e um token de atualização. Deve ser sempre verdadeiro.
tenantId de string O ID do inquilino do utilizador a criar. Usado apenas em multi-tenancy.
Payload de resposta
Nome da propriedade Tipo Descrição
idToken de string Um token de ID da Identity Platform para o utilizador recém-criado.
email de string O email do utilizador recém-criado.
refreshToken de string Um token de atualização da Identity Platform para o utilizador recém-criado.
expiresIn de string O número de segundos em que o token de ID expira.
localId de string O UID do utilizador recém-criado.

Pedido de amostra

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"email":"[user@example.com]","password":"[PASSWORD]","returnSecureToken":true}'

Um pedido bem-sucedido é indicado por um código de estado HTTP 200 OK. A resposta contém o token de ID e o token de atualização da Identity Platform associados à nova conta.

Exemplo de resposta

{
  "idToken": "[ID_TOKEN]",
  "email": "[user@example.com]",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "localId": "tRcfmLH7..."
}

Códigos de erro comuns

  • EMAIL_EXISTS: o endereço de email já está a ser usado por outra conta.
  • OPERATION_NOT_ALLOWED: O início de sessão com palavra-passe está desativado para este projeto.
  • TOO_MANY_ATTEMPTS_TRY_LATER: Bloqueámos todos os pedidos deste dispositivo devido a atividade invulgar. Tente mais tarde.

Inicie sessão com email / palavra-passe

Pode iniciar sessão num utilizador com um email e uma palavra-passe emitindo um pedido HTTP POST para o ponto final de autenticação verifyPassword.

Método: POST

Content-Type: application/json

Ponto final
https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]
Payload do corpo do pedido
Nome da propriedade Tipo Descrição
email de string O email com o qual o utilizador está a iniciar sessão.
palavra-passe de string A palavra-passe da conta.
returnSecureToken booleano Se deve ou não devolver um ID e um token de atualização. Deve ser sempre verdadeiro.
tenantId de string O ID do inquilino no qual o utilizador está a iniciar sessão. Usado apenas em multi-tenancy.
Payload de resposta
Nome da propriedade Tipo Descrição
idToken de string Um token de ID da Identity Platform para o utilizador autenticado.
email de string O email do utilizador autenticado.
refreshToken de string Um token de atualização da Identity Platform para o utilizador autenticado.
expiresIn de string O número de segundos em que o token de ID expira.
localId de string O UID do utilizador autenticado.
registada booleano Se o email é para uma conta existente.

Pedido de amostra

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"email":"[user@example.com]","password":"[PASSWORD]","returnSecureToken":true}'

Um pedido bem-sucedido é indicado por um código de estado HTTP 200 OK. A resposta contém o token de ID e o token de atualização do Identity Platform associados à conta de email/palavra-passe existente.

Exemplo de resposta

{
  "localId": "ZY1rJK0eYLg...",
  "email": "[user@example.com]",
  "displayName": "",
  "idToken": "[ID_TOKEN]",
  "registered": true,
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600"
}

Códigos de erro comuns

  • EMAIL_NOT_FOUND: não existe nenhum registo de utilizador correspondente a este identificador. O utilizador pode ter sido eliminado.
  • INVALID_PASSWORD: a palavra-passe é inválida ou o utilizador não tem uma palavra-passe.
  • USER_DISABLED: a conta de utilizador foi desativada por um administrador.

Inicie sessão anonimamente

Pode iniciar sessão num utilizador anonimamente emitindo um pedido HTTP POST para o ponto final de autenticação signupNewUser.

Método: POST

Content-Type: application/json

Ponto final
https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]
Payload do corpo do pedido
Nome da propriedade Tipo Descrição
returnSecureToken booleano Se deve ou não devolver um ID e um token de atualização. Deve ser sempre verdadeiro.
tenantId de string O ID do inquilino no qual o utilizador está a iniciar sessão. Usado apenas em multi-tenancy.
Payload de resposta
Nome da propriedade Tipo Descrição
idToken de string Um token de ID da Identity Platform para o utilizador recém-criado.
email de string Uma vez que o utilizador é anónimo, este campo deve estar vazio.
refreshToken de string Um token de atualização da Identity Platform para o utilizador recém-criado.
expiresIn de string O número de segundos em que o token de ID expira.
localId de string O UID do utilizador recém-criado.

Pedido de amostra

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]' \
-H 'Content-Type: application/json' --data-binary '{"returnSecureToken":true}'

Um pedido bem-sucedido é indicado por um código de estado HTTP 200 OK. A resposta contém o token de atualização e o token de ID da Identity Platform associados ao utilizador anónimo.

Exemplo de resposta

{
  "idToken": "[ID_TOKEN]",
  "email": "",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "localId": "Jws4SVjpT..."
}

Códigos de erro comuns

  • OPERATION_NOT_ALLOWED: o início de sessão de utilizadores anónimos está desativado para este projeto.

Inicie sessão com a credencial do OAuth

Pode iniciar sessão num utilizador com uma credencial OAuth emitindo um pedido HTTP POST para o ponto final verifyAssertion de autenticação.

Método: POST

Content-Type: application/json

Ponto final
https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]
Payload do corpo do pedido
Nome da propriedade Tipo Descrição
requestUri de string O URI para o qual o IdP redireciona o utilizador.
postBody de string Contém a credencial OAuth (um token de ID ou um token de acesso) e o ID do fornecedor que emite a credencial.
returnSecureToken booleano Se deve ou não devolver um ID e um token de atualização. Deve ser sempre verdadeiro.
returnIdpCredential booleano Se deve forçar a devolução da credencial do OAuth nos seguintes erros: FEDERATED_USER_ID_ALREADY_LINKED e EMAIL_EXISTS.
tenantId de string O ID do inquilino no qual o utilizador está a iniciar sessão. Usado apenas em multi-tenancy.
Payload de resposta
Nome da propriedade