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 OAuth do Google, 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 se o ID do cliente não for aprovado. A validade de sete dias do token não está relacionada a aprovações comerciais ou do 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 ter uma vida útil mais longa do token. Consulte Validade do token de atualização para mais informações.

Acesso negado

Se você tiver configurado a tela de consentimento do OAuth no Google Cloud e o tipo de usuário for Externo, você vai receber um erro "Acesso negado" se tentar vincular uma conta do Google que não está listada como usuário de teste no 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 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 todos os apps que usam esse escopo durante a autorização serão "não verificados", a menos que a verificação da API OAuth seja concluída. A verificação da API OAuth não é necessária quando o uso é pessoal. Device Access

Talvez você veja uma 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 depois em Go to Project Name (unsafe).

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

Cliente inválido

Ao tentar acessar um token de acesso ou de atualização, você vai receber um erro "Cliente inválido" se fornecer um segredo de cliente OAuth 2.0 incorreto. Verifique se o valor client_secret que você está usando nas chamadas de token de acesso e de atualização é o 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, você pode encontrar um erro "Solicitação inválida" de "Parâmetro obrigatório ausente: escopo". Verifique se o valor de scope que você está usando nas chamadas de autorização é o mesmo que você definiu para o cliente OAuth 2.0, conforme encontrado na página Credenciais do Google Cloud.

Falha na correspondência do URI de redirecionamento

Durante a autorização, você pode encontrar um erro de "Redirect uri mismatch". Verifique se o valor de redirect_uri que você está usando nas chamadas de autorização é o mesmo que você definiu para o cliente OAuth 2.0, conforme encontrado na página Credenciais do Google Cloud.

Referência rápida

Use esta referência para implementar rapidamente as etapas para autorizar um user e vincular a Conta do Google .

Para usar esta referência rápida, edite cada variável de marcador de posição 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 ao link PCM no seu app, substituindo:

  1. project-id pelo ID Device Access Project
  2. oauth2-client-id com o 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 com 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 autenticaçã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 extrair 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 do OAuth do Google, substituindo:

  1. oauth2-client-id e oauth2-client-secret com o ID e a chave secreta do cliente OAuth2 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 outro 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 é concluída até que você faça uma chamada de API com o token de acesso do user. Essa chamada inicial finaliza o processo de autorização e ativa os eventos.

É necessário 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 uma hora, conforme observado no parâmetro expires_in retornado pelo Google OAuth. Se o token de acesso expirar, use o token de atualização para conseguir um novo.

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

  1. oauth2-client-id e oauth2-client-secret com o ID e a chave secreta do cliente OAuth2 das suas Credenciais do Google Cloud
  2. refresh-token com o código que você recebeu ao receber 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"
}