javascript - Google api auth2 signOut 不工作

标签 javascript angularjs google-api google-api-client

首先,我正在遵循本指南 https://developers.google.com/identity/sign-in/web/和这个引用 https://developers.google.com/identity/sign-in/web/reference .

但我没有在 window 中声明回调,而是使用 gapi.signin2.render 函数来呈现按钮并在我的 Angular Controller 中为它附加一个处理程序。

登录工作正常,问题是,当我尝试通过调用 gapi.auth2.getAuthInstance().signOut() 注销时,它只是不这样做。

我注意到 accounts.google.com 的 sessionStorage 仍然存在,因此当我在登录屏幕上再次呈现按钮时,Google 会自动让我重新登录。

我试着看看 signOut() 完成后会发生什么:

gapi.auth2.getAuthInstance().signOut().then(function() {
    console.log(gapi.auth2.getAuthInstance().isSignedIn.get());
    // prints 'true'
});

我还尝试调用 disconnect() 而不是 signOut(),知道它会撤销访问权限,并且确实会从 sessionStorage 中删除 token ,但用户 session 是还在那里。只有在我重新加载页面后它才会消失。

这是我的完整代码:

$scope.logout = function() {
    //...
    gapi.auth2.getAuthInstance().signOut().then(function() {
      console.log(gapi.auth2.getAuthInstance().isSignedIn);
    });
};

$scope.processAuth = function(authResult) {
  console.log("success");
  if(authResult.getAuthResponse().id_token) {
    // backend calls
  }
};

$scope.renderSignInButton = function() {
  console.log(gapi.auth2);
  gapi.signin2.render('signInButton',
    {
      'onsuccess': $scope.processAuth, // Function handling the callback.
      'onfailure': $scope.signinFailed, // Function handling the callback.
      'clientid': 'asdasdasd.apps.googleusercontent.com',
      'scope': 'https://www.googleapis.com/auth/userinfo.email',
      'cookiepolicy': 'single_host_origin'
    }
  );
};

$scope.renderSignInButton();

最佳答案

我试过如下,它成功了。当auth2.signOut()成功时需要调用auth2.disconnect()

<script type="text/javascript">
    function signOut() {
        var auth2 = gapi.auth2.getAuthInstance();
        auth2.signOut().then(function () {
            auth2.disconnect();
        });

    }

    function onLoad() {
        gapi.load('auth2', function() {
            gapi.auth2.init();
        });
    }
</script>



<script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>

关于javascript - Google api auth2 signOut 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515499/

相关文章:

python - 无法使用python在谷歌驱动器上上传大文件

fonts - Google Fonts API 在 AMP 页面上返回 403

javascript - 如何使用 JavaScript 在 Firefox 中触发鼠标滚轮事件?

webkit - 谷歌托管 jQuery 和 webfonts 导致 webkit 警告

javascript - 在 <canvas> 中绘制填字游戏网格的最快算法?

javascript - AngularJs:如何使 ui-select 正常工作?

javascript - 用于指令通信的 AngularJS 指令抛出有关未找到 Controller 的错误

javascript - Grunt 不再实时重载

javascript - 在 rxjs 中使用 .map() 添加属性

javascript - 使用 jQuery 查找并替换按钮单击时的颜色