Com os projetos do Google Cloud e do Acesso a dispositivos criados, você pode autorizar uma Conta do Google com um dispositivo Google Nest compatível para a API SDM.
Vincular sua conta
Para visualizar estruturas e dispositivos, vincule uma Conta do Google ao seu Device Access projeto usando o PCM. O PCM permite que o user conceda permissão ao permitir developers para acessar as estruturas e os dados do dispositivo.
Neste guia, você atua como o user eo developer.
Abra o link a seguir em um navegador da Web, substituindo:
- project-id pelo seu Device Access Project ID
- oauth2-client-id pelo 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, uma tela inicial Escolha uma conta vai aparecer com uma lista das suas Contas do Google. Se for o caso, selecione a Conta do Google vinculada aos dispositivos que você quer autorizar Device Access.
- A tela Permissões do Google Nest é o próprio PCM. Nela, você pode conceder permissões de estrutura e dispositivo. Ative as permissões da sua casa (etapa 1) e de todos os dispositivos nela que são compatíveis com a API SDM (etapa 2) e clique em Próxima.
- Na tela Escolha uma conta para continuar com Nome do projeto, em que Nome do projeto é o nome do seu projeto na nuvem do Google, selecione a Conta do Google que você quer autorizar para a API SDM. Use a mesma Conta do Google de antes.
- Depois de escolher uma conta, você poderá receber uma tela de aviso informando que o Google não verificou esse app. Se for o caso, para continuar, clique na opção Avançado e em Acessar Nome do projeto (não seguro). Consulte O Google não verificou esse app para mais informações.
- Na tela Conceder permissão a Nome do projeto, clique em Permitir para dar permissão ao projeto de acessar sua Conta do Google.
- Na tela Confirmar suas escolhas, verifique se as permissões que você quer conceder estão marcadas e clique em Permitir para confirmar.
Você será redirecionado para https://www.google.com. O código de autorização é retornado como o parâmetro
codeno 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 pode ser usado para chamar a API SDM.
Abra um terminal e execute o seguinte
curlcomando `curl`, substituindo:- oauth2-client-id e oauth2-client-secret pelo ID e pela chave secreta do cliente OAuth2 das suas credenciais do Google Cloud
- 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 token de acesso e um token 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.{"access_token": "access-token","expires_in": 3599,"refresh_token": "refresh-token","scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Fazer uma chamada de lista de dispositivos
A autorização não será concluída até que você faça
sua primeira
devices.list
chamada com o novo token de acesso. Essa
chamada inicial conclui o processo de autorização e ativa eventos se
você já tiver configurado uma assinatura do Pub/Sub.
Use curl para fazer essa 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'Uma chamada bem-sucedida retorna uma lista de dispositivos vinculados ao seu Device Access projeto. Cada dispositivo tem uma 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 da API SDM são válidos apenas por 1 hora, conforme observado no expires_in parâmetro retornado pelo Google OAuth. Se
o token de acesso expirar, use o token de atualização para receber um novo.
O comando é semelhante ao do token de acesso, exceto que você usa um grant_type diferente.
Abra um terminal e execute o seguinte
curlcomando, substituindo:- oauth2-client-id e oauth2-client-secret pelo ID e pela chave secreta do cliente OAuth2 das suas credenciais do Google Cloud
- refresh-token pelo código que você recebeu ao receber o acesso token inicialmente.
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.
{"access_token": "new-access-token","expires_in": 3599,"scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
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 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 sua tela de permissão OAuth no Google Cloud e o Tipo de usuário é Externo, você receberá um erro de "Acesso negado" se tentar vincular a conta a uma Conta do Google que não está listada como um usuário de teste do seu app. Certifique-se de adicionar 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 esse 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 uso pessoal, a verificação da API OAuth não é necessária.
Uma tela "O Google não verificou esse 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 "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 sua
página
Credenciais
do Google Cloud.
Solicitação inválida, escopo obrigatório ausente
Depois de conceder permissões no PCM, você poderá encontrar um erro "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 Credenciais do Google Cloud.
Falha na correspondência do URI de redirecionamento
Ao passar pela autorização, você poderá encontrar um erro "Falha na correspondência do URI de redirecionamento". 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
Credenciais
do Google Cloud.
Modificar permissões da conta
Para modificar as permissões concedidas a um Device Access projeto ou desconectá-lo completamente, acesse o PCM:
https://nestservices.google.com/partnerconnections
Essa página mostra todos os serviços de desenvolvedores terceirizados (Device Access projetos) conectados à 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 Voltar para salvar.
Para desconectar um serviço autorizado completamente, clique em Desvincular sua Conta do Google para revogar todas as permissões e tokens de acesso que o projeto recebeu 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 para autorizar um user e vincular a Conta do Google .
Para usar essa 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
Abra o link a seguir em um navegador da Web, substituindo:
- project-id pelo seu Device Access Project ID
- oauth2-client-id pelo 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 precisa 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 pode ser usado para chamar a API SDM.
Abra um terminal e execute
o seguinte curl comando `curl`, substituindo:
- oauth2-client-id e oauth2-client-secret pelo ID e pela chave secreta do cliente OAuth2 das suas credenciais do Google Cloud
- authorization-code pelo código que você recebeu na etapa anterior
O Google OAuth 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=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
sua primeira
devices.list
chamada com o novo token de acesso. Essa
chamada inicial conclui o processo de autorização e ativa eventos se
você já tiver configurado uma assinatura do Pub/Sub.
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 1 hora, conforme observado no expires_in parâmetro retornado pelo Google OAuth. Se
o token de acesso expirar, use o token de atualização para receber um novo.
Abra um terminal e execute o
seguinte curl comando, substituindo:
- oauth2-client-id e oauth2-client-secret pelo ID e pela chave secreta do cliente OAuth2 das suas credenciais do Google Cloud
- refresh-token pelo código que você recebeu ao receber o acesso token inicialmente.
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"
}