Para oferecer suporte ao fluxo implícito do OAuth 2.0, seu serviço disponibiliza um endpoint de autorização por HTTPS. Esse endpoint é responsável pela autenticação e pela obtenção do consentimento dos usuários para acesso aos dados. O endpoint de autorização apresenta uma interface de login para os usuários que ainda não fizeram login e registra o consentimento para o acesso solicitado.
Quando um aplicativo do Google precisa chamar uma das APIs autorizadas do seu serviço, o Google usa esse endpoint para receber permissão dos usuários e chamar essas APIs em nome deles.
Vinculação de contas do Google: fluxo implícito do OAuth
O diagrama de sequência a seguir detalha as interações entre o usuário, o Google e os endpoints do seu serviço.
Funções e responsabilidades
A tabela a seguir define as funções e responsabilidades dos participantes no fluxo implícito do OAuth de vinculação de contas do Google (GAL). Observação: no GAL, o Google atua como o cliente do OAuth, enquanto seu serviço atua como o provedor de identidade/serviço.
| Ator / componente | Função na GAL | Responsabilidades |
|---|---|---|
| App / servidor do Google | Cliente OAuth | Inicia o fluxo, recebe o token de acesso usando um redirecionamento do navegador e o armazena com segurança para acessar as APIs do seu serviço. |
| Seu endpoint de autorização | Servidor de autorização | Autentica seus usuários, recebe o consentimento deles e emite tokens de acesso de longa duração diretamente para o Google. |
| URI de redirecionamento do Google | Endpoint de callback | Recebe o redirecionamento do usuário do seu serviço de autorização com os valores
access_token e state no fragmento
do URL. |
Uma sessão típica de fluxo implícito do OAuth 2.0 iniciada pelo Google tem o seguinte fluxo:
- O Google abre seu endpoint de autorização no navegador do usuário. O usuário faz login, se ainda não tiver feito isso, e concede permissão ao Google para acessar os dados dele com sua API, caso ainda não tenha concedido permissão.
- Seu serviço cria um token de acesso e o retorna ao Google. Para fazer isso, redirecione o navegador do usuário de volta ao Google com o token de acesso anexado à solicitação.
- O Google chama as APIs do seu serviço e anexa o token de acesso a cada solicitação. Seu serviço verifica se o token de acesso concede autorização ao Google para acessar a API e conclui a chamada de API.
Receita de implementação
Siga estas etapas para implementar o fluxo implícito.
Etapa 1: processar solicitações de autorização
Quando o Google inicia a vinculação de contas, ele redireciona o usuário para seu endpoint de autorização. Para ver contratos de protocolo detalhados e requisitos de parâmetros, consulte o endpoint de autorização.
Para processar a solicitação, faça o seguinte:
Valide a solicitação:
- Confirme se o
client_idcorresponde ao ID do cliente atribuído ao Google. - Confirme se o
redirect_uricorresponde ao URL de redirecionamento do Google esperado:none https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID - Verifique se
response_typeétoken.
- Confirme se o
Autentique o usuário:
- Verifique se o usuário fez login no seu serviço.
- Se o usuário não estiver conectado, peça que ele conclua o fluxo de login ou inscrição.
Gerar token de acesso:
- Crie um token de acesso exclusivo e não adivinhável associado ao usuário e ao cliente.
Redirecionar de volta para o Google:
- Redirecione o navegador para o URL fornecido em
redirect_uri. - Anexe os seguintes parâmetros ao fragmento do URL (hash):
access_token: o token de acesso gerado.token_type: precisa serbearer.state: o valor de estado não modificado recebido do Google.
- Redirecione o navegador para o URL fornecido em
Processar solicitações userinfo
O endpoint userinfo é um recurso protegido pelo OAuth 2.0 que retorna declarações sobre o usuário vinculado. A implementação e hospedagem do endpoint userinfo é opcional, exceto nos seguintes casos de uso:
- Login da conta vinculada com o Google One Tap.
- Assinatura sem atrito no AndroidTV.
Depois que o token de acesso for recuperado do endpoint do token, o Google enviará uma solicitação ao endpoint de informações do usuário para recuperar informações básicas de perfil sobre o usuário vinculado.
| cabeçalhos de solicitação do endpoint userinfo | |
|---|---|
Authorization header |
O token de acesso do tipo Bearer. |
Por exemplo, se seu ponto de extremidade de informações do usuário estiver disponível em
https://myservice.example.com/userinfo, uma solicitação terá esta aparência:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
Para que o endpoint userinfo processe solicitações, siga estas etapas:
- Extrair o token de acesso do cabeçalho "Autorização" e retornar as informações do usuário associado ao token de acesso.
- Se o token de acesso for inválido, retorne o erro "HTTP 401 Unused" ao usar o cabeçalho de resposta
WWW-Authenticate. Veja abaixo um exemplo de resposta de erro userinfo: Se uma resposta de erro "401 Não autorizado" ou outra resposta de erro for retornada durante o processo de vinculação, o erro não poderá ser recuperado, o token recuperado será descartado e o usuário terá que iniciar o processo de vinculação novamente.HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
Se o token de acesso for válido, retorne uma resposta HTTP 200 com o seguinte objeto JSON no corpo do HTTPS resposta:
Se o seu endpoint de informações do usuário retornar uma resposta HTTP 200 bem-sucedida, o token e as reivindicações recuperados serão registrados na Conta do Google do usuário.{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }resposta do endpoint userinfo subUm ID exclusivo que identifica o usuário no seu sistema. emailEndereço de e-mail do usuário. given_nameOpcional:nome do usuário. family_nameOpcional:sobrenome do usuário. nameOpcional:o nome completo do usuário. pictureOpcional:foto do perfil do usuário.