Autorizar uma conta

Depois de criar seus projetos do Google Cloud e do Acesso a Dispositivos, você pode autorizar uma Conta do Google com um dispositivo Google Nest compatível para o API SDM.

Para acessar estruturas e dispositivos, vincule uma Conta do Google à sua Device Access usando o PCM. O PCM permite que o user conceda permissão a permite que developers acessem suas estruturas e dados de dispositivos.

Neste guia, você vai atuar como user e developer.

  1. Abra o link a seguir em uma Web navegador, substituindo:

    1. project-id pelo seu Device Access Project ID
    2. oauth2-client-id pelo ID do cliente OAuth2 da sua Google Cloud Credenciais
    .
    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. 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. Nesse caso, selecione a Conta do Google vinculada ao dispositivo quer autorizar para Device Access.
  3. 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.
  4. 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.
  5. Depois de escolher uma conta, pode aparecer uma tela de aviso informando O Google não verificou este app. Nesse caso, para continuar, clique no Advanced e clique em Go to Project Name (não seguro). Consulte O Google não verificou este app por mais informações imprecisas ou inadequadas.
  6. 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.
  7. Na tela Confirmar suas escolhas, selecione as permissões que você quer. a conceder estão marcadas e clique em Permitir para confirmar.
  8. 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
    
  9. 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.

  1. Abra um terminal e execute pelo seguinte comando curl, substituindo:

    1. oauth2-client-id e oauth2-client-secret com o ID do cliente OAuth2 e a chave secreta do cliente da sua Google Cloud Credenciais
    2. 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'
    
  2. O OAuth do Google retorna dois tokens, um de acesso e um token de atualização.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    Copie os dois valores. O token de acesso é usado para chamar A API SDM e o token de atualização são usados para receber um novo token de acesso.

Fazer uma chamada da lista de dispositivos

A autorização não será concluída até que você faça seu primeiro devices.list com seu novo token de acesso. Isso chamada inicial encerra o processo de autorização e ativa eventos se você já configurou 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 seu token de acesso expirar, use o token de atualização para receber um novo.

O comando é semelhante ao do token de acesso, mas você usa um token de acesso diferente grant_type:

  1. Abra um terminal e execute o comando seguinte comando curl, substituindo:

    1. oauth2-client-id e oauth2-client-secret com o ID do cliente OAuth2 e a chave secreta do cliente da sua Google Cloud Credenciais
    2. 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'
    
  2. 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 o Google APIs do Google Cloud.

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 Expiração do token de atualização para mais informações imprecisas ou inadequadas.

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 os erros encontrados ao acessar PCM, consulte Gerente de conexão com parceiros (PCM) Referência de erros.

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. Ao usar Device Access para uso pessoal, a verificação da API OAuth não é obrigatória.

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 App não verificado tela para mais informações.

Cliente inválido

Ao tentar obter um token de acesso ou atualização, você vai receber uma mensagem cliente" se você fornecer uma chave secreta do cliente OAuth 2.0 incorreta. 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, é possível que você se depare com "Solicitação inválida" erro "Parâmetro obrigatório ausente: escopo". Certifique-se de que O valor de scope usado nas chamadas de autorização é o mesmo que você definiu para o cliente OAuth 2.0. como encontrado na documentação do Google Cloud Credenciais página.

Incompatibilidade de redirecionamento no URI

Ao passar pela autorização, você pode encontrar a mensagem "Incompatibilidade de uri de redirecionamento". erro. 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 permissões da conta

Desconecte ou modifique as permissões concedidas a um Device Access projeto totalmente, vá para PCM:

https://nestservices.google.com/partnerconnections

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 desejado.

Para revogar apenas permissões específicas de um serviço autorizado, alterne o botão que você quer revogar e clique na seta 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 faça uma chamada da lista de dispositivos primeiro.

Referência rápida

Use esta referência para implementar rapidamente as etapas para autorizar uma user e vincular a própria Conta do Google ,

Para usar essa referência rápida, edite cada variável de marcador nos exemplos de código pelos 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:

  1. project-id pelo seu Device Access Project ID
  2. oauth2-client-id pelo ID do cliente OAuth2 da sua Google Cloud Credenciais
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 que podem ser usadas para chamar a API SDM.

Abra um terminal e execute pelo seguinte comando curl, substituindo:

  1. oauth2-client-id e oauth2-client-secret com o ID do cliente OAuth2 e a chave secreta do cliente da sua Google Cloud Credenciais
  2. authorization-code pelo código que você recebeu na etapa anterior.

O OAuth do Google retorna dois tokens, um 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 seu primeiro devices.list com seu novo token de acesso. Isso chamada inicial encerra o processo de autorização e ativa eventos se você já configurou uma assinatura do Pub/Sub.

Você deve usar um dos Chamadas de API listadas para o escopo especificado para concluir a autorização.

sdm.service

dispositivo

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 à API SDM são apenas válido por 1 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 comando seguinte comando curl, substituindo:

  1. oauth2-client-id e oauth2-client-secret com o ID do cliente OAuth2 e a chave secreta do cliente da sua Google Cloud Credenciais
  2. 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"
}