Autenticando as ações de casa inteligente para o Google Assistente com Auth0

Nick Felker em Google Developers Follow Abr 30 · 8 min ler

Quando você cria uma ação para a casa inteligente do Google Assistente, uma das etapas de configuração é adicionar vinculação de conta. Essas ações exigem uma integração do OAuth 2.0 entre o Google Assistente e seu serviço para verificar se cada consulta e comando são provenientes de um usuário autorizado.

Grandes empresas com produtos domésticos inteligentes já podem ter um serviço OAuth e engenheiros capazes de mantê-lo seguro. Para empresas menores ou desenvolvedores individuais, a configuração de um serviço OAuth pode ser um trabalho adicional em uma área em que eles têm pouca experiência. Um sistema de autenticação inseguro não é bom para desenvolvedores ou usuários, mas existem serviços gerenciados que fornecem soluções prontas para o OAuth.

Você deve reservar um tempo para considerar qual solução de autenticação faz mais sentido para você. Auth0 é um exemplo que fornece muitos serviços de autorização diferentes, como nome de usuário / senha e provedores de identidade, como o login do Google.

Neste post, mostrarei como usar o Auth0 para facilitar a autenticação de uma ação de casa inteligente, permitindo que você se concentre mais na integração e menos no gerenciamento de contas.

Crie um projeto de ações

Primeiro, você deve criar o projeto. Isso criará um ID do projeto, que você usará posteriormente na configuração do seu OAuth.

Abra o console Ações e clique em Incluir / importar projeto . Digite o nome do seu projeto e clique em Criar Projeto .

Você será direcionado para a página de integração. Você deve selecionar o cartão de controle Início e, em seguida, o Smart home . Esta etapa configura o seu projeto para ser uma ação de casa inteligente.

Depois de entrar no console, clique no ícone de configurações ao lado da opção Visão geral e selecione Configurações do projeto . Você verá o nome do projeto e o ID exclusivo do projeto. Anote o ID do projeto, você o usará mais tarde para criar um URL de retorno de chamada.

Configurando Auth0

Vá para o site da Auth0 e crie uma conta, se ainda não o fez.

Depois de começar com o Auth0, você precisará criar um novo inquilino. É como o domínio do projeto, no qual você pode ter vários aplicativos separados que podem ser autenticados. No menu suspenso, selecione Criar inquilino .

Dê ao seu inquilino um nome ou o seu domínio de inquilino . Tome nota deste domínio, você o usará para criar sua autorização e URLs de token.

Depois de criar seu inquilino, vá para a página Aplicativos . É aqui que você cria um aplicativo que autentica seus usuários.

Quando você visitar a página pela primeira vez, verá que um aplicativo padrão já foi criado. Podemos usar isso para configurar nossa autorização. Clique no ícone de configurações para abrir as configurações do aplicativo, onde você começará a configurar a conexão entre sua ação e o OAuth.

Na parte superior da página, há informações sobre o aplicativo. Anote o ID do cliente e o Segredo do cliente . Você vai usar isso mais tarde.

Em Application Type , selecione Regular Web Application , pois o Assistente do Google enviará solicitações OAuth para Auth0 em nome de um determinado usuário.

Para URLs de retorno de chamada permitidos , você precisará de dois URLs separados por vírgulas:

  • O primeiro é https: // <auth0-tenant-id> .auth0.com / userinfo . Este URL será usado para ler informações básicas sobre a identidade do usuário. Certifique-se de substituir <auth0-tenant-id> pelo seu ID de locatário real.
  • A segunda é https://oauth-redirect.googleusercontent.com/r/ <actions-project-id> . Esse URL será chamado durante o processo de vinculação de conta para passar as informações de autenticação para o Assistente do Google. Certifique-se de substituir <actions-project-id> pelo seu ID de projeto real.

Para URI de Login do Aplicativo , não forneça nenhum valor. Auth0 fornecerá uma página de login padrão que você pode usar.

Para Origens da Web permitidas , insira https://oauth-redirect.googleusercontent.com . Este domínio poderá participar da autenticação de origem cruzada.

Há configurações adicionais aqui, como o nome, a descrição e o logotipo do aplicativo. Você pode preenchê-los conforme necessário.

Em seguida, vá para a guia Conexões do seu aplicativo. Aqui você verá todas as maneiras possíveis que os usuários podem autenticar. Por enquanto, desative o nome de usuário e a senha de autenticação e deixe o login do Google ligado. Você pode configurar todos os serviços que deseja posteriormente.

Agora que você configurou seu aplicativo, volte ao console Actions para concluir a configuração e criar seu webhook.

Vinculação de conta

No console de ações, abra a página de vinculação de conta em Opções avançadas .

Desativar a criação automática de conta, selecionando Não, eu só quero permitir a criação de conta no meu site . Selecione OAuth como o tipo de vinculação e o código de autorização como o tipo de concessão.

Abaixo, insira o ID do cliente e o segredo do cliente do seu aplicativo Auth0. Para o URL de autorização e o URL do token , use https: // <auth0-tenant-id> .auth0.com / authorize e https: // <auth0-tenant-id> .auth0.com / oauth / token, respectivamente. Certifique-se de substituir <auth0-tenant-id> pelo seu ID de locatário real.

Adicione os escopos openid e email , que permitirão obter informações do usuário em sua Ação.

Por fim, adicione instruções de teste. Ao enviar sua ação de casa inteligente para certificação, os revisores precisarão de orientação sobre a autenticação, para que possam garantir que sua ação funcione conforme o esperado. Por exemplo, se você estiver usando o Login do Google, instrua os revisores a usarem a conta do Google. Se você estiver usando um nome de usuário e senha básicos, forneça credenciais de teste.

Salve essas configurações. Agora que você configurou sua autenticação, precisará de uma maneira de identificar o usuário em seu webhook para poder fornecer ao Google Assistente os dispositivos desse usuário.

Autenticação no seu webhook

Os dispositivos domésticos inteligentes de um usuário podem já estar armazenados em um banco de dados, como o Cloud Firestore . Nesse formato, pode haver uma coleção de usuários, cada um identificado por um endereço de e-mail. Cada documento do usuário pode ter uma coleção de dispositivos.

As intenções da casa inteligente SYNC , QUERY e EXECUTE podem ser facilmente tratadas consultando o banco de dados e, em seguida, respondendo com os resultados do banco de dados.

Como parte da integração do OAuth, o seu webhook receberá um token de acesso da Auth0 como cabeçalho. Para obter o endereço de e-mail, você precisará enviar esse token de volta para Auth0 e solicitar informações do usuário. Auth0 tem uma biblioteca para o Node.js, que pode simplificar as chamadas para o serviço do seu webhook.

Observação: se você estiver usando o Cloud Functions for Firebase, não poderá fazer chamadas de rede de saída na camada gratuita. Você precisaria fazer upgrade para um plano diferente, como o nível Blaze pago conforme o uso .

Para configurar sua biblioteca Auth0 e a biblioteca Actions on Google , você pode visualizar o snippet abaixo:

O token de acesso está em um campo de cabeçalho chamado autorização . Terá o token de acesso no formato Portador 123ABC . Para obter o token de acesso, você pode obter uma substring para esse valor.

Para obter as informações do usuário, você pode criar uma função para retornar essas informações, como abaixo:

Agora que você tem uma maneira de receber o e-mail, você pode usar essa função em suas intenções de lar inteligente. O código a seguir conecta as informações do usuário da função getEmail à sua intenção do Smart Home SYNC:

A partir desse exemplo, você pode usar o mesmo modelo de código para obter o email do usuário e consultar o banco de dados para as intenções QUERY e EXECUTE.

Depois que seu webhook estiver completo e implantado, você poderá acessar a página Ações no console de ações e fornecer o URL de preenchimento do seu webhook.

Testando

Depois que tudo tiver sido configurado, acesse a página Simulator no console Actions e clique no botão Start Testing . Você verá uma caixa de diálogo. Clique em Concluído e seu projeto será colocado em um estado de teste.

Nota: Até você iniciar a vinculação de conta em seu telefone, não poderá usar o simulador para enviar comandos.

No seu smartphone, abra o app Google Home e vá para a lista de contas domésticas inteligentes. Verifique se você está conectado com a mesma conta do Google no console do Google Actions e no aplicativo para dispositivos móveis. Você verá seu teste. Ação aparecerá no topo da lista.

Ao clicar na ação, você será redirecionado para esta página de login genérica. Você pode ver elementos de branding, como o nome Auth0 e o logotipo. Há também maneiras mais avançadas de personalizar a página de login no console do Auth0.

A seleção do botão Login com o Google abrirá uma página de login do Google, que permite selecionar a conta desejada.

Após a autenticação, seu webhook será chamado e responderá com os dispositivos inteligentes desse usuário. Os usuários agora poderão consultar o status e controlar seus dispositivos com segurança.

Conclusão

Visite a documentação do lar inteligente para saber mais sobre como criar sua própria ação de casa inteligente, incluindo recursos adicionais, como sincronização de solicitação e estado do relatório. Iniciantes para casa inteligente também podem experimentar o codelab e o projeto de amostra para obter uma compreensão mais profunda da plataforma.

Quero mais? Vá até a comunidade Ações no Google para discutir Ações com outros desenvolvedores. Participe do programa da comunidade de desenvolvedores do Actions on Google e você poderá ganhar um crédito mensal de US $ 200 do Google Cloud e uma camiseta do Assistente ao publicar seu primeiro aplicativo.