我正在将Google社交登录集成到我的网络应用程序(AngularJS)中。我无法退出用户。 以下是我稍微简化的方法 -
场景1.第一次使用者 -
我有自己的按钮,点击后会加载页面' X'。此页面会将用户重定向到Google登录和/或App权限批准页面。 最后,X将用户返回到我的网站。我通过了通过Google登录的信息,现在我必须通过gapi登录才能以后退出。
登录可以通过两种方式实现 -
gapi.auth.authorize()
immediate: true
或gapi.auth.signIn()
与'immediate': true
我试过了两个。两者都不起作用。第二个还有一个缺点,即浏览器显示弹出窗口已被阻止。
然后有一个退出按钮,它会调用gapi.auth.signOut()
并加载页面' Y'。
页面Y返回到我的站点,并触发方案2(如下所示),这将加载登录页面:(
场景2.在同一浏览器中返回用户。
使用下面的代码,首先我检查是否有谷歌acess_token,所以我可以尝试通过谷歌登录。
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()
。
但是,只要加载了我的索引页面,就会加载谷歌登录页面。所以我没有进一步探索它。
请让我知道我哪里出错了以及如何解决这个问题。