Botão de login do Google - Como obter o id_token no servidor ao usar o fluxo de redirecionamento
Estou adicionando um botão de login federado "Fazer login no Google" ao meu site. Para área de trabalho, estou usando a janela pop-up, que funciona muito bem assim:
gapi.auth2.init();
gapi.auth2.getAuthInstance().signIn().then(function(user) {
var id_token = user.getAuthResponse().id_token;
// ajax call to pass this to server
});
No entanto, no celular, queremos usar redirecionamentos em vez de pop-ups, pois guias separadas são um pouco estranhas nos navegadores móveis. Eu apenas mudo para:
gapi.auth2.init({
ux_mode: 'redirect',
redirect_uri: 'http://example.com/google_login/'
});
Isso funciona, mas adiciona o id_token necessário como um fragmento de hash, que o servidor não pode ver. Termina em:
http://example.com/google_login/#id_token=ASDFASDFASDFASDF
Eu acho que poderia renderizar uma página de conector com uma tag de script que puxa window.location.hash e redireciona para si mesma com isso como um parâmetro de consulta, mas parece loucura que eu teria que fazer isso. Existe uma maneira melhor?