Erros de autorização

Durante o processo de autorização, o OAuth do Google 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. Essa é uma das possíveis causas. A expiração 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 ter períodos de validade de token mais longos. Consulte Validade do token de atualização para mais informações.

Acesso negado

Se você configurou a tela de permissão OAuth no Google Cloud e o Tipo de usuário é Externo, vai receber um erro de "Acesso negado" se tentar vincular a conta a uma Conta do Google que não está listada como usuário de teste do seu app. Adicione a Conta do Google à seção Usuários de teste na sua tela de permissão 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. Ao usar Device Access para fins pessoais, a verificação da API OAuth não é necessária.

Uma tela "O Google não verificou este app" pode aparecer durante o processo de autorização, que aparece se o escopo sdm.service não estiver configurado na sua tela de permissão OAuth no Google Cloud. Essa tela pode ser ignorada clicando na opção Avançado e em Acessar Nome do projeto (não seguro).

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

Cliente inválido

Ao tentar receber um token de acesso ou de atualização, você vai receber um erro de "Cliente inválido" se fornecer uma chave secreta do cliente OAuth 2.0 incorreta. Verifique se o client_secret valor 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 de credenciais do Google Cloud.

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

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

URI de redirecionamento incompatível

Ao passar pela autorização, você pode encontrar um erro de "URI de redirecionamento incompatível". Verifique se o valor redirect_uri que você está usando nas chamadas de autorização é o mesmo definido para o cliente OAuth 2.0, conforme encontrado na sua página de 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 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 ID
  2. oauth2-client-id pelo ID do cliente OAuth2 nas suas credenciais do Google Cloud
  3. redirect-uri por um URI de redirecionamento especificado para o ID do cliente OAuth2 que você está usando
  4. scope por um dos seus 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 code parâmetro 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 OAuth do Google, substituindo:

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

O OAuth do Google retorna dois tokens: um token de acesso e um token 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 só será concluída quando você fizer uma chamada de API com o user's token de acesso. Essa chamada inicial conclui o processo de autorização e ativa eventos.

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

sdm.service

dispositivos

Consulte a devices.list referência da API 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 da API SDM são válidos apenas por uma hora, conforme observado no expires_in parâmetro retornado pelo OAuth do Google. Se o token de acesso expirar, use o token de atualização para receber um novo.

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

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

O OAuth do Google 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"
}