Com os projetos do Google Cloud e do Device Access criados, você pode autorizar uma Conta do Google com um dispositivo Google Nest compatível para a API SDM.
Vincule sua conta
Para conferir estruturas e dispositivos, vincule uma Conta do Google ao seu projetoDevice Access usando o PCM. O PCM permite que o user conceda permissão para que developers acessem as estruturas e os dados do dispositivo.
Neste guia, você vai atuar como user e developer.
Abra o link a seguir em um navegador da Web, substituindo:
- project-id pelo seu Device Access Project ID
- oauth2-client-id com o ID do cliente OAuth2 das suas credenciais do Google Cloud
https://nestservices.google.com/partnerconnections/project-id/auth?
redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service - Se você fez login no Google com várias contas recentemente, você pode estar será exibida a tela inicial Escolha uma conta com uma lista dos seus Contas do Google. Se sim, selecione a Conta do Google vinculada aos dispositivos que você quer autorizar Device Access.
- A tela Permissões do Google Nest é PCM. Aqui você pode conceder permissões de estrutura e dispositivo. Ative o permissões para sua casa (etapa 1) e todos os dispositivos nela que estão compatível com a API SDM (etapa 2) e clique em Próxima.
- Na tela Escolha uma conta para acessar Nome do projeto, em que Nome do projeto é o nome do seu projeto do Google Cloud, selecione a conta do Google que você quer autorizar para o API SDM. Use a mesma Conta do Google de antes.
- Depois de escolher uma conta, você pode receber uma tela de aviso informando que o Google não verificou este app. Nesse caso, para continuar, clique na opção Advanced e em Go to Project Name (unsafe). Consulte O Google não verificou este app para mais informações.
- Na tela Conceder permissão a Nome do projeto, clique em Permitir para conceder a permissão do projeto para acessar sua Conta do Google.
- Na tela Confirmar suas escolhas, selecione as permissões que você quer. a conceder estão marcadas e clique em Permitir para confirmar.
Você será redirecionado para https://www.google.com. O código de autorização será retornado como o parâmetro
code
no URL, que precisa estar neste formato:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - Copie o código de autorização.
Receber um token de acesso
Use o código de autorização para recuperar um token de acesso, que para chamar a API SDM.
Abra um terminal e execute o seguinte comando
curl
, substituindo:- oauth2-client-id e oauth2-client-secret com o ID do cliente OAuth2 e a chave secreta do cliente da sua Google Cloud Credenciais
- authorization-code pelo código que você recebeu na etapa anterior.
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=https://www.google.com' O Google OAuth retorna dois tokens, um de acesso e outro de atualização.
{
Copie os dois valores. O token de acesso é usado para chamar a API SDM, e o token de atualização é usado para receber um novo token de acesso.
Fazer uma chamada de lista de dispositivos
A autorização não é concluída até que você faça
a primeira
chamada devices.list
com o novo token de acesso. Essa
chamada inicial finaliza o processo de autorização e ativa os eventos se
você já tiver configurado uma assinatura do Pub/Sub.
Use curl
para fazer esta chamada para o endpoint devices
:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Se a chamada for concluída, uma lista de dispositivos vinculados ao seu Device Accessserá retornada projeto. Cada dispositivo tem a própria lista exclusiva de características disponíveis:
{ "devices": [ { "name": "enterprises/project-id/devices/device-id", "type": "sdm.devices.types.device-type", "traits": { ... }, "parentRelations": [ { "parent": "enterprises/project-id/structures/structure-id/rooms/room-id", "displayName": "device-room-name" } ] } ] }
Como usar um token de atualização
Os tokens de acesso à API SDM são apenas
válido por 1 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.
O comando é semelhante ao do token de acesso, exceto pelo uso de um
grant_type
diferente.
Abra um terminal e execute o seguinte comando
curl
, substituindo:- oauth2-client-id e oauth2-client-secret com o ID do cliente OAuth2 e a chave secreta do cliente da sua Google Cloud Credenciais
- refresh-token pelo código que você recebeu ao receber o acesso. com base no token correto anterior.
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' O Google OAuth retorna um novo token de acesso.
{
Solução de problemas
Para saber mais sobre o Google OAuth, consulte Como usar o OAuth 2.0 para acessar o Google 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 uma possível causa. A validade do token de sete dias não está relacionada aos serviços comerciais ou de sandbox. Uma conta de serviço ou de usuário precisa acessar o OAuth 2.0 aprovado e colocado em produção para aumentar a vida útil do token. Consulte Validade do token de atualização para mais informações.
Acesso negado
Se você configurou a tela de consentimento do OAuth no Google Cloud e se o Tipo de usuário for Externo, a mensagem "Acesso negado" vai aparecer. se você tentar vincular uma conta do Google que não esteja listada como um usuário de teste. para seu 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 Gerenciador de conexões de parceiros (PCM).
O Google não verificou este app
A API SDM usa um escopo restrito, o que significa que qualquer os apps que usarem esse escopo durante a autorização não serão verificados a não ser que A verificação da API OAuth foi concluída. A verificação da API OAuth não é necessária ao usar Device Access para uso pessoal.
Talvez você veja a mensagem "O Google não verificou este app" tela durante a autorização
que vai aparecer se o escopo sdm.service
não estiver configurado na
a tela de consentimento do OAuth no Google Cloud. Essa tela pode ser
ignorada clicando na opção Avançado e, em seguida, clicando em Ir para Projeto
Nome (não seguro).
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. Certifique-se de que
O valor client_secret
que você está usando nas chamadas de acesso e de token de atualização é o único
para o ID do cliente OAuth 2.0 em uso, conforme encontrado na
Google Cloud
Credenciais
página.
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.
Incompatibilidade de redirecionamento no URI
Durante a autorização, você pode encontrar um erro de "Redirect uri mismatch". Verifique se o valor redirect_uri
usado nas chamadas de autorização é
igual ao definido para o cliente OAuth 2.0, conforme encontrado no
Google Cloud
Credenciais
página.
Modificar as permissões da conta
Para modificar as permissões concedidas a um projeto Device Access ou desconectá-lo inteiramente, acesse o PCM:
https://nestservices.google.com/partnerconnections (em inglês)
Esta página mostra todos os serviços para desenvolvedores terceirizados (Device Access projetos) conectado à sua conta. Selecione o Device Access projeto que você quer mudar. Use a próxima tela para modificar as permissões conforme necessário.
Para revogar apenas permissões específicas de um serviço autorizado, ative as permissões que você quer revogar e clique na seta de retorno para salvar.
Para desconectar um serviço autorizado, clique em Desvincular sua conta do Google Conta para revogar todas as permissões e tokens de acesso que o projeto recebeu concedido para a conta.
Se o PCM não mostrar o serviço desejado, talvez seja necessário fazer uma chamada de lista de dispositivos primeiro.
Referência rápida
Use esta referência para implementar rapidamente as etapas de autorização de 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
Abra o link a seguir em uma Web navegador, substituindo:
- project-id pelo ID Device Access Project
- oauth2-client-id com o ID do cliente OAuth2 das suas credenciais do Google Cloud
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service
2 Código de autenticação
Você será redirecionado para
https://www.google.com. O código de autorização é retornado como o parâmetro code
no URL.
que deve estar neste formato:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 Token de acesso
Use o código de autorização para recuperar um token de acesso, que para chamar a API SDM.
Abra um terminal e execute
pelo seguinte comando curl
, substituindo:
- oauth2-client-id e oauth2-client-secret com o ID do cliente OAuth2 e a chave secreta do cliente da sua Google Cloud Credenciais
- authorization-code pelo código que você recebeu na etapa anterior.
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=https://www.google.com'
Resposta
{"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer" }
4 Chamada de API
A autorização não será concluída até que você faça
seu primeiro
devices.list
com seu novo token de acesso. Essa
chamada inicial finaliza o processo de autorização e ativa os eventos se
você já tiver configurado uma assinatura do Pub/Sub.
É 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 apenas
por uma hora, conforme observado no parâmetro expires_in
retornado pelo Google OAuth. Se
seu token de acesso expirar, use o token de atualização para receber um novo.
Abra um terminal e execute o
seguinte comando curl
, substituindo:
- oauth2-client-id e oauth2-client-secret com o ID do cliente OAuth2 e a chave secreta do cliente da sua Google Cloud Credenciais
- refresh-token pelo código que você recebeu ao receber o acesso. com base no token correto anterior.
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/sdm.service",
"token_type": "Bearer" }