Erros de autorização

Durante o processo de autorização, o Google OAuth pode retornar um erro. Use este guia para resolver os erros mais comuns durante esse processo.

Solução de problemas

Para saber mais sobre o Google OAuth, consulte Como usar o OAuth 2.0 para acessar as APIs do Google.

O token de atualização continua expirando

Os tokens de atualização podem parar de funcionar após sete dias, caso o ID do cliente não seja aprovado. A validade do token de sete dias não está relacionada a aprovações comerciais ou de sandbox. Uma conta de serviço ou de usuário precisa ter o ID do cliente OAuth 2.0 aprovado e colocado em produção para aumentar a vida útil do token. Consulte Expiração do token de atualização para mais informações.

Acesso negado

Se você tiver configurado a tela de permissão OAuth no Google Cloud e o Tipo de usuário for Externo, a mensagem de erro "Acesso negado" será exibida se você tentar vincular uma Conta do Google que não esteja listada como um usuário de teste para o app. Adicione a Conta do Google à seção Usuários de teste na tela de consentimento do OAuth.

Erro do Partner Connections Manager (PCM)

Para receber ajuda com erros encontrados ao acessar o PCM, consulte a Referência de erros do Partner Connections Manager (PCM).

O Google não verificou este app

A API SDM usa um escopo restrito, o que significa que qualquer app que usar esse escopo durante a autorização será "não verificado", a menos que a Verificação da API OAuth seja concluída. Ao usar Device Access para uso pessoal, a verificação da API OAuth não é necessária.

Talvez você veja a tela "O Google não verificou este app" durante o processo de autorização, que aparece se o escopo sdm.service não estiver configurado na tela de consentimento do OAuth no Google Cloud. Para ignorar essa tela, clique na opção Advanced e em Go to Project Name (não seguro).

Consulte Tela de app não verificado para mais informações.

Cliente inválido

Ao tentar receber um token de acesso ou de atualização, você verá o erro "Cliente inválido" se informar uma chave secreta do cliente do OAuth 2.0 incorreta. Verifique se o valor client_secret que você está usando nas chamadas de token de acesso e atualização é o mesmo do ID do cliente OAuth 2.0 que está sendo usado, conforme encontrado na página Credenciais do Google Cloud.

Solicitação inválida, escopo obrigatório ausente

Depois de conceder permissões no PCM, o erro "Solicitação inválida" pode aparecer: "Parâmetro obrigatório ausente: escopo". Verifique se o valor scope que você está usando nas chamadas de autorização é igual ao definido para o cliente OAuth 2.0, conforme encontrado na página Credenciais do Google Cloud.

Incompatibilidade de URI de redirecionamento

Ao passar pela autorização, você pode encontrar um erro "Incompatibilidade de URI de redirecionamento". Verifique se o valor redirect_uri que você está usando nas chamadas de autorização é o mesmo que o definido para o cliente OAuth 2.0, conforme encontrado na página Credenciais do Google Cloud.

Referência rápida

Use essa referência para implementar rapidamente as etapas para autorizar umauser e vincular a Conta do Google dela.

Para usar esta referência rápida, edite cada variável de marcador nos exemplos de código com os valores da sua integração específica e copie e cole conforme necessário:

1 PCM

Direcione o user para o link do PCM no seu app, substituindo:

  1. project-id pelo seu Device Access Project documento de identidade
  2. oauth2-client-id pelo ID do cliente OAuth2 das suas credenciais do Google Cloud
  3. redirect-uri com um URI de redirecionamento especificado para o ID do cliente OAuth2 que você está usando.
  4. scope por um dos escopos disponíveis
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

2 Código de autorização

Depois de conceder permissões pelo PCM para o escopo selecionado, o user será redirecionado para o URI de redirecionamento especificado. O Código de autorização é retornado como o parâmetro code no URL, que precisa estar neste formato:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

3 token de acesso

Use o código de autorização para recuperar um token de acesso, que pode ser usado para chamar a API SDM em nome do usuário.

Faça uma chamada POST para o endpoint de OAuth do Google, substituindo:

  1. oauth2-client-id e oauth2-client-secret pelo ID do cliente OAuth2 e pela chave secreta do cliente das suas credenciais do Google Cloud
  2. authorization-code pelo código que você recebeu na etapa anterior.
  3. redirect-uri com um URI de redirecionamento especificado para o ID do cliente OAuth2 que você está usando.

O Google OAuth retorna dois tokens: um de acesso e um de atualização.

Solicitação

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=redirect-uri'

Resposta

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

4 Chamada de API

A autorização não será concluída até você fazer uma chamada de API com o token de acesso do user. Essa chamada inicial finaliza o processo de autorização e ativa os eventos.

Você precisa usar uma das chamadas de API listadas para o escopo especificado para concluir a autorização.

sdm.service

dispositivo

Consulte a Referência da API devices.list para mais informações.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 token de atualização

Os tokens de acesso para a API SDM são válidos por apenas 1 hora, conforme indicado no parâmetro expires_in retornado pelo Google OAuth. Se o token de acesso expirar, use o token de atualização para receber um novo.

Faça uma chamada POST para o endpoint de OAuth do Google, substituindo:

  1. oauth2-client-id e oauth2-client-secret pelo ID do cliente OAuth2 e pela chave secreta do cliente das suas credenciais do Google Cloud
  2. refresh-token pelo código que você recebeu ao receber inicialmente o token de acesso.

O Google OAuth retorna um novo token de acesso.

Solicitação

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

Resposta

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}