无法使用gapi.auth.signOut退出

时间:2014-10-17 06:14:22

标签: javascript google-api-js-client gapi

我正在将Google社交登录集成到我的网络应用程序(AngularJS)中。我无法退出用户。 以下是我稍微简化的方法 -

场景1.第一次使用者 -

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

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

  1. gapi.auth.authorize() immediate: true
  2. gapi.auth.signIn()'immediate': true
  3. 我试过了两个。两者都不起作用。第二个还有一个缺点,即浏览器显示弹出窗口已被阻止。

    然后有一个退出按钮,它会调用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()。 但是,只要加载了我的索引页面,就会加载谷歌登录页面。所以我没有进一步探索它。

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

0 个答案:

没有答案