Guia do conceito de OAuth e Login do Google (Dialogflow)

O tipo de vinculação do OAuth e do Login do Google adiciona o Login do Google Vinculação de conta com base em OAuth. Se você usar esse tipo de vinculação na sua ação, o começa com o Login do Google, que permite verificar se a conta de serviço informações de perfil existem no seu sistema. Caso contrário, um fluxo padrão do OAuth começa. Ao oferecer uma combinação desses dois tipos de vinculação, os usuários podem vincular a identidade dele na sua Ação com uma Conta do Google ou de terceiros. Se eles também poderão criar uma nova conta com o perfil do Google informações imprecisas ou inadequadas.

O OAuth e o Login do Google são a solução recomendada de vinculação de contas se o seguinte se aplica:

  • Você tem uma Ação que abrange várias plataformas (por exemplo, se a ação funciona com um app Android).
  • Você já tem um sistema de autenticação e quer permitir que os usuários vincular identidades a contas que não são do Google. Por exemplo, se você oferece um programa de fidelidade e quer ter certeza de que o usuário não perderá a pontos acumulados na conta atual.

Para verificar se o OAuth e o Login do Google são a solução certa para você, consulte página Escolha o tipo de vinculação da conta.

Termos-chave

Antes de ler sobre o funcionamento do OAuth e do Login do Google, com os seguintes termos:

  • Token de ID do Google: uma declaração assinada da identidade de um usuário que contém informações básicas do perfil do Google de um usuário (nome, endereço de e-mail e foto do perfil). Um token de ID do Google é um JSON Web Token (JWT). Este é um exemplo de token decodificado:
{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • Intent auxiliar de login da conta:uma intent auxiliar que você chama para solicitar um fluxo de vinculação de contas no Google Assistente. Para mais informações, consulte Login na conta.
    • String de contexto:uma string personalizada que você adiciona à conta intent de ajuda de login que informe ao usuário por que você quer vincular a conta.
  • Fluxo do código de autorização: um fluxo do OAuth 2.0 que pode ser implementado com OAuth + Login do Google. Esse fluxo requer dois endpoints:
    • Endpoint de autorização:o endpoint que apresenta a interface de login. para os usuários que ainda não fizeram login. Ela registra o consentimento para solicitou acesso na forma de um código de autorização de curta duração.
    • Endpoint de troca de token:esse endpoint é responsável por dois tipos de trocas:
      1. Troca um código de autorização por um token de atualização de longa duração e um token de acesso de curta duração. Essa troca acontece quando o usuário passa pelo fluxo de vinculação da conta.
      2. Troca um token de atualização de longa duração por um acesso de curta duração com base no token correto anterior. Essa troca acontece quando o Google precisa de um novo token de acesso porque ela expirou.
  • Fluxo de código implícito:um fluxo do OAuth 2.0 que pode ser implementado com OAuth + Login do Google. Esse fluxo requer apenas um endpoint de autorização. Durante esse fluxo, o Google abre seu endpoint de autorização no navegador. Se o login for bem-sucedido, você retornará um token de acesso de longa duração para Google. Esse token de acesso agora está incluído em todas as solicitações enviadas do Google Assistente à sua ação.
  • Token de acesso: um token que autoriza seu serviço a acessar partes de um os dados do usuário. Os tokens de acesso são associados a cada usuário.
  • Token de atualização: um token que é trocado por um novo token de acesso assim que um token de acesso de curta duração expirar.

Pré-requisitos

Para usar o tipo de vinculação do OAuth e do Login do Google, você precisa do seguinte:

  • Um servidor OAuth 2
  • Um endpoint de troca de token

    O endpoint de troca de token precisa ser estendido para adicionar suporte ao protocolos para vinculação automática e criação de contas com base em um token de ID Ou seja, adicione os parâmetros intent=get e intent=create nas solicitações para neste endpoint).

Como funciona

Esta seção descreve o fluxo geral para o OAuth e o Login do Google. A seção a seguir, Fluxos de OAuth e GSI, descreve os vários fluxos que podem ocorrer a) se você ativar ou desativar criação de conta por voz e b) usando as APIs implícita ou fluxo do código de autorização.

O fluxo fundamental é o seguinte:

  1. Sua Ação pede ao usuário consentimento para acessar o perfil do Google dele.
  2. Depois que o usuário dá o consentimento, sua ação recebe um token de ID do Google que contém as informações do perfil do Google do usuário.
  3. É necessário validar e decodificar o token para ler o conteúdo do perfil.
  4. Seu Action usa esse token para verificar se o perfil do Google do usuário informações existem no sistema.
    1. Em caso afirmativo, isso significa que o usuário já fez login no sistema com a Conta do Google, e o Assistente vincula a identidade do usuário à Conta do Google. O usuário pode continuar a conversa com o Google Assistente com a conta vinculada.
    2. Caso contrário, confira a etapa 5.
  5. O usuário pode a) criar uma nova conta com o perfil do Google ou b) fazer login no sistema com uma conta diferente. A as opções apresentadas ao usuário diferem dependendo se você ativar ou desativar a criação de contas por voz. Se o usuário fizer login na sua conta sistema com uma conta diferente, o fluxo OAuth padrão é iniciado.
  6. Depois que o usuário criar uma conta ou fizer login com um provedor diferente, seu serviço retorna um token de acesso ao Google. Se você estiver usando o fluxo do código de autorização, seu serviço também retornará um token de atualização.
  7. O usuário agora pode continuar a conversa com o Google Assistente usando vinculada.

Fluxos de OAuth e GSI

Esta seção aborda os vários fluxos que podem ocorrer com o OAuth e a GSI. Esses diagramas mostram os fluxos que ocorrem com o fluxo do código de autorização em vez do fluxo de código implícito, e presumir que você esteja usando o Dialogflow como a solução de processamento de linguagem natural para sua ação.

Cada fluxo contém estas etapas comuns depois que o usuário invoca sua ação:

No fluxo acima, você chama a intent auxiliar actions.intent.SIGN_IN com uma string de contexto personalizada por você. Essa intent pede permissão ao usuário para acessar as informações do perfil do Google. Após o consentimento do usuário, o Assistente envia uma solicitação que contém as informações de perfil de user@gmail.com.

Os fluxos após esse ponto serão diferentes se você tiver configurado a conta ou não. a vinculação por voz e se as informações do usuário já existem no seu sistema. Cada um desses fluxos é descrito nas seções a seguir.

Fluxos com a criação de contas de voz ativada

Esta seção detalha os fluxos de vinculação de contas que podem ocorrer se você ativar criação de conta por voz.

Fluxo 1: as informações do usuário existem no seu sistema

Nesse caso, o usuário representado por user@gmail.com existe no back-end, Portanto, o endpoint de troca de token retorna um token para o usuário. O conjunto de dados na sua Ação agora está vinculada à Conta do Google. O conjunto de dados solicitação original (“Faça meu pedido de sempre”) corresponde à intenção personalizada order_drink. Seu webhook processa o fulfillment da intent correspondente e consulta os para o pedido normal de user@gmail.com. O usuário pode continuar o conversando com o Assistente.

Fluxo 2: as informações do usuário não existem e o usuário cria uma conta

Porque você ativou a criação de conta por voz e o user@gmail.com não no back-end, o Google Assistente pergunta ao usuário se ele quer fazer um dos seguintes:

a) Criar uma nova conta em seu sistema usando as informações do perfil do Google dele. que é possível por meio de comandos de voz

b) Fazer login no sistema com uma conta diferente

Nesse caso, o usuário decide criar uma nova conta por voz. Ligações do Google endpoint de troca de token do seu serviço com uma solicitação para criar uma conta. Essa solicitação contém o token de ID do Google, que inclui os componentes necessários para criar uma nova conta. É possível usar as informações desse token (o nome e o endereço de e-mail do usuário) para criar uma conta para o usuário.

Após a criação da conta, seu serviço retorna um token de acesso e atualiza para a conta recém-criada. A identidade do usuário na sua ação agora é vinculada à Conta do Google. A solicitação original do usuário (“Faça meu pedido de sempre”) corresponde à intent personalizada order_drink. Seu webhook processa o o cumprimento da intent correspondente e consulta seu banco de dados para O pedido normal de user@gmail.com, que ainda não existe porque o usuário é novo. Depois, sua Ação pode perguntar ao usuário o que ele quer pedir.

Fluxo 3: as informações do usuário não existem e o usuário faz login com uma conta diferente

Como você ativou a criação de conta por voz, o Google Assistente pergunta ao usuário se ele pode fazer o seguinte:

a) Criar uma nova conta em seu sistema usando as informações do perfil do Google dele. que é possível por meio de comandos de voz

b) Fazer login no sistema com uma conta diferente

Nesse caso, o usuário opta por fazer login com uma conta diferente, o que inicia o fluxo padrão do OAuth. Se o fluxo começasse em um dispositivo somente de voz, O Google transfere a execução para um smartphone. O Google abre o endpoint de autorização no navegador do usuário e, dependendo das suas do usuário, o usuário pode escolher se quer a) fazer login no serviço com Uma conta que não usa o Login do Google ou b) criar uma nova conta usando um provedor diferente. Para mais informações sobre o fluxo do OAuth, consulte a Guia do conceito do OAuth.

Depois de verificar as credenciais do usuário, seu serviço retorna um token de acesso e um token de atualização para o Google. A identidade do usuário na sua ação agora está vinculada para uma conta que não seja do Google. A solicitação original do usuário (“Faça meu pedido de sempre”) corresponde a intent personalizada order_drink. Seu webhook processa o fulfillment do a intent correspondente e consulta seu banco de dados sobre o pedido normal de user@gmail.com, que ainda não existe porque o usuário é novo. Seu Action pode fazer ao usuário o que ele gostaria de pedir ou pedir que ele faça o pedido normal.

Fluxo com a criação de conta de voz desativada

Esta seção detalha o fluxo de vinculação de contas que pode ocorrer se você desativar criação de conta por voz.

Fluxo 4: as informações do usuário não existem

Você não ativou a criação da conta por voz, e o usuário não existe na sua para que o fluxo OAuth padrão comece. O Google Assistente abre endpoint de autorização no navegador do usuário (se o fluxo começou em uma instância dispositivo, o Google transfere a execução para um dispositivo com uma tela). O usuário pode optar por a) fazer login com outro provedor, caso tenha se registrado seu serviço com uma conta diferente ou b) crie uma nova conta com um em um provedor diferente. Para mais informações sobre o fluxo do OAuth, consulte a Guia do conceito do OAuth.

Depois de verificar as credenciais do usuário, seu serviço retorna um token de acesso e um token de atualização para o Google. A identidade do usuário na sua ação agora está vinculada para uma conta que não seja do Google. A solicitação original do usuário (“Faça meu pedido de sempre”) corresponde a intent personalizada order_drink. Seu webhook processa o fulfillment do a intent correspondente e consulta seu banco de dados sobre o pedido normal de user@gmail.com, que ainda não existe porque o usuário é novo. Seu Action pode fazer que o usuário faça o pedido normal.