Google 注销后登录不重定向

Google Signin doesn't redirect after sign out

我正在使用 Google 登录我的网站,该网站直到最近都运行良好。现在,当用户退出时,Google 退出,但不会将用户重定向到我在脚本中设置的页面。

我正在使用以下注销脚本:

<script>
  function signOut() {
    var auth2 = gapi.auth2.getAuthInstance();
    auth2.signOut().then(function () {
      console.log('User signed out.');
      window.location = "/user/logout"
    });
  }
</script>

控制台日志已执行,但 window.location 应该重定向用户,但事实并非如此。没有错误,只是什么也没发生。

更新

我实际上可以看到 url /user/logout 在后端被调用,但它在用户的浏览器中没有做任何事情。在加载 url 时运行的 python 代码下方。会话也没有取消设置,因为当我点击刷新时,用户仍然在我的应用程序上登录(但不是 Google)。

class LogoutHandler(BaseHandler):
  def get(self):
    self.auth.unset_session()
    self.redirect(self.uri_for('home'))

更新 2

如果我在新标签页中打开 link,它会完美退出。如果我将目标更改为“_top”或“_self”,它只会在后端调用 url 但由于未知原因不会在浏览器中执行。

更新 3

通过以下方式找出原因:浏览器(在本例中为 Chrome)正在取消请求。但是为什么?

一个建议是在 GoogleAuth(在您的代码 auth2 中)完全初始化后退出。查看官方Reference

你的情况试试

<script>
  function signOut() {
    var auth2 = gapi.auth2.getAuthInstance();
    auth2.then(function(){
        auth2.signOut().then(function () {
          console.log('User signed out.');
          window.location = "/user/logout"
        });
    });
  }
</script>

正常解决

<a href="/user/logout"></a> 

并将 Google 注销脚本移动到用户重定向到的页面。