谷歌帐户注销和重定向

Shr*_*ath 33 openid account logout

我使用openid登录用户.(仅限谷歌帐户).现在我的页面中有一个退出链接,点击后,我希望用户退出谷歌帐户,并将页面重定向到我的主页.这可以吗?

编辑 -
更改已接受的答案,因为现在Google允许将[继续]重定向到您想要的任何域.

ira*_*ira 63

我已经解决了这个问题,当用户点击注销链接时调用此函数:

var logout = function(){
document.location.href = "https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.example.com";
}
Run Code Online (Sandbox Code Playgroud)

当用户单击链接时,浏览器会将用户重定向到注销页面,并且只有在注销完成后,用户才会重定向到站点" http://www.example.com ".

我希望这可以提供帮助.

  • 在重定向到您的应用程序时使用`appengine.google.com`作为中间人现在正在工作,但我找不到此端点的任何文档.谨慎使用. (5认同)
  • 这不再起作用了。这是预期的行为,[请检查此情况以获取答案](/sf/ask/3804221851/#55853066) (3认同)

Jos*_*aum 19

挑战

请求https://www.google.com/accounts/Logout会将用户注销.Google有时会向该地址添加一个continueUrl参数,但只有当目标是某个Google网站时,才能成功重定向用户,而不是您自己的.这使得该方法无法使用.

此外,OpenID规范此时不包括全局注销.

还有另一种方式:

建议

在您的网页上加入IFrame,并在注销链接上使用onClick JavaScript事件处理程序将https://www.google.com/accounts/Logout加载到IFrame中.之后(您可能想要检查IFrame是否成功加载),将用户重定向到您自己站点的注销过程.注销后,让该页面重定向到您的主页.

链接可能看起来像这样:

<a href="https://www.google.com/accounts/Logout"
    onclick="myIFrame.location='https://www.google.com/accounts/Logout';StartPollingForCompletion();return false;">
   log out</a>
<iframe id="myIFrame"></iframe>
Run Code Online (Sandbox Code Playgroud)

您需要实现该StartPollingForCompletion()功能以定期检查注销页面是否已加载.用于setTimeout()计时轮询,并检查IFrame上的一些属性(我不确定哪些属性可行,因为你在这里跨站点工作).

另见这些问题:

OpenID的.你如何退出

如何向启用OpenID的站点添加注销功能?