Google登录按钮 - 如何在使用重定向流时在服务器上获取id_token

jps*_*ons 7 federated-identity google-signin

我在我的网站上添加了"使用Google登录"联合登录按钮.对于桌面我使用的弹出窗口效果很好:

gapi.auth2.init();
gapi.auth2.getAuthInstance().signIn().then(function(user) {
  var id_token = user.getAuthResponse().id_token;
  // ajax call to pass this to server
});
Run Code Online (Sandbox Code Playgroud)

但是在移动设备上我们想要使用重定向而不是弹出窗口,因为在移动浏览器中单独的选项卡有点笨拙.我只是改为:

gapi.auth2.init({
  ux_mode: 'redirect',
  redirect_uri: 'http://example.com/google_login/'
});
Run Code Online (Sandbox Code Playgroud)

这有效,但它添加了我需要的id_token作为哈希片段,服务器无法看到.它最终在:

http://example.com/google_login/#id_token=ASDFASDFASDFASDF
Run Code Online (Sandbox Code Playgroud)

我想我可以渲染一个带有脚本标签的连接器页面拉出window.location.hash并将其作为查询参数重定向到自身,但看起来很疯狂我必须这样做.有没有更好的办法?