Como posso verificar um token de acesso à autenticação do Google?
De alguma forma, preciso consultar o Google e perguntar: [o token de acesso fornecido] é válido para a conta do Google [example@example.com]?
Versão curta :
está claro como um token de acesso fornecido pelo Google Authentication Api :: OAuth Authentication for Web Applications pode ser usado para solicitar dados de vários serviços do Google. Não está claro como verificar se um determinado token de acesso é válido para uma determinada conta do Google. Eu gostaria de saber como.
Versão longa :
estou desenvolvendo uma API que usa autenticação baseada em token. Um token será retornado mediante o fornecimento de um nome de usuário + senha válidos ou mediante o fornecimento de um token de terceiros de qualquer um dos N serviços verificáveis.
Um dos serviços de terceiros será o Google, permitindo que um usuário se autentique no meu serviço usando sua Conta do Google. Mais tarde, isso será estendido para incluir contas do Yahoo, provedores confiáveis de OpenID e assim por diante.
Exemplo esquemático de acesso baseado no Google:
texto alternativo http://webignition.net/images/figures/auth_figure002.png
A entidade 'API' está sob meu controle total. A entidade 'interface pública' é qualquer aplicativo baseado na Web ou na área de trabalho. Algumas interfaces públicas estão sob meu controle, outras não e outras ainda que eu talvez nunca saiba.
Portanto, não posso confiar no token fornecido à API na etapa 3. Ele será fornecido junto com o endereço de e-mail da conta do Google correspondente.
De alguma forma, preciso consultar o Google e perguntar: esse token de acesso é válido por exemplo@exemplo.com ?
Nesse caso, example@example.com é o identificador exclusivo da conta do Google - o endereço de e-mail que alguém usa para fazer login na conta do Google. Não se pode supor que seja um endereço do Gmail - alguém pode ter uma conta do Google sem ter uma conta do Gmail.
A documentação do Google indica claramente como, com um token de acesso, os dados podem ser recuperados de vários serviços do Google. Nada parece indicar como você pode verificar se um determinado token de acesso é válido em primeiro lugar.
Atualizar O token é válido para N serviços do Google. Não posso tentar um token em um serviço do Google como forma de verificá-lo, pois não saberei qual subconjunto de todos os serviços do Google um determinado usuário realmente usa.
Além disso, nunca usarei o token de acesso de autenticação do Google para acessar quaisquer serviços do Google, apenas como meio de verificar se um suposto usuário do Google é realmente quem eles dizem que são. Se houver outra maneira de fazer isso, estou feliz em tentar.