我在我的网站上使用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代码下面。该会话也未被取消设置,因为当我点击刷新时,用户仍然在我的应用上登录(但不在谷歌上)。
class LogoutHandler(BaseHandler):
def get(self):
self.auth.unset_session()
self.redirect(self.uri_for('home'))
更新2
如果我在新标签中打开链接,则表示完全没问题。如果我将目标更改为&#39; _top&#39;或者&#39; _self&#39;,它只是在后端调用url但是由于未知原因在浏览器中执行。
更新3
通过以下方式找出原因:浏览器(在这种情况下为Chrome)正在取消请求。但为什么呢?
答案 0 :(得分:0)
一个建议是在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>
答案 1 :(得分:0)
通过正常
解决了这个问题<a href="/user/logout"></a>
将Google注销脚本移动到用户重定向到的页面。