1

我在我的网络应用程序(AngularJS)中集成了谷歌社交登录。我无法注销用户。以下是我稍微简化的方法 -

场景 1. 第一次用户 -

我有自己的按钮,单击该按钮会加载页面“X”。此页面将用户重定向到 Google 登录和/或应用权限批准页面。最后 X 将用户返回到我的站点。我收到了通过 Google 登录的信息,现在我必须通过 gapi 登录,以便稍后退出。

登录可以通过两种方式实现 -

  1. gapi.auth.authorize()immediate: true或_
  2. 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()但这会在我的索引页面加载后立即加载谷歌登录页面。所以我没有进一步探索。

请让我知道我哪里出错了以及如何解决这个问题。

4

0 回答 0