我在我的网络应用程序(AngularJS)中集成了谷歌社交登录。我无法注销用户。以下是我稍微简化的方法 -
场景 1. 第一次用户 -
我有自己的按钮,单击该按钮会加载页面“X”。此页面将用户重定向到 Google 登录和/或应用权限批准页面。最后 X 将用户返回到我的站点。我收到了通过 Google 登录的信息,现在我必须通过 gapi 登录,以便稍后退出。
登录可以通过两种方式实现 -
gapi.auth.authorize()
immediate: true
或_gapi.auth.signIn()
和'immediate': true
我都试过了。两者都不起作用。其次还有一个缺点,即浏览器显示弹出窗口已被阻止。
然后是一个退出按钮,它调用gapi.auth.signOut()
并加载页面'Y'。页面 Y 返回到我的网站,触发场景 2(请阅读下文),加载登录页面 :(
场景 2. 返回用户,在同一个浏览器中。
使用下面的代码,首先我检查是否有 google access_token,所以我可以尝试通过 Google 登录。
gapi.auth.authorize({
client_id: self.googleAppId,
immediate: true,
scope: ['https://www.googleapis.com/auth/plus.me'],
cookie_policy: window.location.protocol+'//'+window.location.hostname
}, function (response: any) {
console.log(response);
if (response.access_token) {
self.googleLogin(response.access_token);
}
else {
self.loadHome();
}
});
googleLogin 加载另一个页面“Z”,该页面重定向回我的原始页面。Z 将 URL 中的参数传递给我,以便我知道我已通过 Google 登录。我回到场景 1。
问题是 - 如果用户已使用 注销gapi.auth.signOut
,那么为什么gapi.auth.authorize
(在场景 2 中)返回 access_token?在第二种情况下,我如何区分已登录用户和已注销用户?
我尝试在第二种情况下替换gapi.auth.authorize
为。gapi.auth.signIn()
但这会在我的索引页面加载后立即加载谷歌登录页面。所以我没有进一步探索。
请让我知道我哪里出错了以及如何解决这个问题。