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:
- project-id pelo ID Device Access Project
- oauth2-client-id com o ID do cliente OAuth2 das suas credenciais do Google Cloud
- redirect-uri com um URI de redirecionamento especificado para o ID do cliente OAuth2 que você está usando
- 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:
- oauth2-client-id e oauth2-client-secret com o ID e a chave secreta do cliente OAuth2 das suas Credenciais do Google Cloud
- authorization-code pelo código que você recebeu na etapa anterior
- 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:
- oauth2-client-id e oauth2-client-secret com o ID e a chave secreta do cliente OAuth2 das suas Credenciais do Google Cloud
- 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" }