谷歌帐户注销并重定向

问题描述:

我正在使用openid登录用户。(仅限谷歌帐户)。 现在我的页面上有一个退出链接,点击时,我希望用户从Google帐户中注销,并将页面重定向到我的主页。 可以这样做吗?谷歌帐户注销并重定向

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

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

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

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

我希望这可以提供帮助。

+2

谢谢,但你迟到了派对:)我需要它2年前:) – Shrinath 2013-02-25 09:30:31

+6

对不起,但最近我有同样的问题,我没有找到一个有效的解决方案在网络上。 我希望这个解决方案对像我这样的人有用:D – ira 2013-02-25 20:36:46

+0

好的,你的意思是Google现在让你“继续”进入任何领域? – Shrinath 2013-03-01 09:08:51

挑战

请求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> 

您需要实现StartPollingForCompletion()功能定期检查注销页面是否已加载。使用setTimeout()来进行投票计时,并检查IFrame上的某些属性(我不确定哪些会起作用,因为您在此处跨站点工作)。

也看到这些问题:

OpenID. How do you logout

How to add logout feature to an OpenID enabled site?

+0

啊..似乎好主意..会尽量回来.. – Shrinath 2010-11-17 07:57:17

+0

我想到的是这样的:logout

+0

如何在评论中设置文本格式dude? – Shrinath 2010-11-17 08:57:45

我一直在努力这样做。对于谷歌唯一的应用程序 -
要注销尝试以下​​两种选择:
1)使用I帧 -

<iframe src="https://mail.google.com/a/YOURDOMAIN.IN/?logout&hl=en" width="100%" height="300"> 
    <p>Your browser does not support iframes.</p> 
</iframe> 

2)使用JavaScript -

<script type="text/javascript"> 
    window.open('https://mail.google.com/a/YOURDOMAIN.IN/?logout&hl=en','logout_from_google','width=600,height=300,menubar=no,status=no,location=no,toolbar=no,scrollbars=no,top=20,left=20'); 
</script> 
+0

不好意思,这个帖子回复很久,他提出了我在该项目中使用的iframe方法...感谢您宝贵的时间:) – Shrinath 2011-02-14 12:18:59

+0

嗨。你能告诉我你是怎么做到的?我想要做的是发送一个隐藏的请求,从谷歌acccount注销用户,然后带他到我想要的任何PHP页面。请帮忙 ! – 2011-02-15 08:33:30

我只需要做同样的事情,注销用户。不知何故接受的答案不为我工作,我得到了一个错误,从谷歌

The page you requested is invalid. 

所以我最终把这个在我的网页:

<img src="https://www.google.com/accounts/Logout" /> 

成功地注销用户。 source

正如我已经花了巨大多的时间在这个谷歌登录/注销问题我的应用程序(这是一个节点/ MongoDB的服务器,使用大量谷歌文档和谷歌API的脚本),我不得不共用我在这里的成绩..

唯一的好办法彻底注销用户使用:如果你使用该解决方案通过上面的爱尔兰共和军放弃

var newWindow = window.open('https://mail.google.com/mail/?logout&hl=fr','Disconnect from Google','width=100,height=50,menubar=no,status=no,location=no,toolbar=no,scrollbars=no,top=200,left=200'); 
setTimeout(function(){ 
    if (newWindow) newWindow.close(); 
    window.location="auth/google"; 
},3000); 

,它是做什么的,似乎对部分注销浏览器的当前选项卡。这意味着如果用户关闭该选项卡并重新打开应用程序,他将仍然记录到以前的帐户。

我不得不使用外部窗口,因为从电子邮件谷歌帐户注销后,我无法正确重定向到我的应用程序。如果用户带宽不是太慢,在关闭弹出窗口之前让注销完成3秒钟,这个解决方案大部分时间都可以工作。然后用户需要在我的主窗口应用程序中登录另一个帐户。

这证实了floccinaucinihilipilification的解决方案,也许上面给出的iframe解决方案应该比我的更好。

以下是我所做的事情,不记得我是否做出来或发现它在某处......它的功能就像一个魅力......除了它将您从所有Google网站注销(我可以真不敢相信他们没有提供一个适当的方式做到这一点,但你去那里。)

<script> 
function makeFrame(domId,url) { 
    ifrm = document.createElement("IFRAME"); 
    ifrm.setAttribute("src", url); 
    ifrm.setAttribute("id", domId); 
    ifrm.setAttribute("style", "display:none;");   
    ifrm.style.width = 1+"px"; 
    ifrm.style.height = 1+"px"; 
    document.body.appendChild(ifrm); 
} 

function logOutGoogle(){ 
    makeFrame('googleLogoutIFrame','https://www.google.com/accounts/Logout'); 
} 
$(window).ready(function() { 
    logOutGoogle(); 
}); 
</script>