Openid google帐户注销和重定向

Openid google帐户注销和重定向,openid,logout,account,Openid,Logout,Account,我正在使用openid登录用户。(仅限谷歌帐户)。 现在我在我的页面中有一个注销链接,单击该链接,我希望用户从google帐户中注销,并将页面重定向到我的主页。 这能做到吗 编辑- 更改接受的答案,因为现在谷歌允许重定向[继续]到您想要的任何域 挑战 请求将注销用户。谷歌有时会向该地址添加一个continuerl参数,但只有当目标是某个谷歌站点而不是你自己的站点时,它才能成功重定向用户。这使得该方法无法使用 此外,OpenID规范目前不包括全局注销 还有另一种方法: 建议 在页面上包含一个IFr

我正在使用openid登录用户。(仅限谷歌帐户)。 现在我在我的页面中有一个注销链接,单击该链接,我希望用户从google帐户中注销,并将页面重定向到我的主页。 这能做到吗

编辑-

更改接受的答案,因为现在谷歌允许重定向[继续]到您想要的任何域

挑战

请求将注销用户。谷歌有时会向该地址添加一个continuerl参数,但只有当目标是某个谷歌站点而不是你自己的站点时,它才能成功重定向用户。这使得该方法无法使用

此外,OpenID规范目前不包括全局注销

还有另一种方法:

建议

在页面上包含一个IFrame,并在注销链接上使用onClick JavaScript事件处理程序加载到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>
<a class="btn btn-default navbar-btn text-white" id="signOut" href="../home.html" onclick="signOut('https://www.google.com/accounts/Logout');">Sign out</a>
    <script>
      function signOut() {
        var auth2 = gapi.auth2.getAuthInstance();
        auth2.signOut().then(function () {
          console.log('User signed out.');
        });
      }
      firebase.auth().signOut().then(function() {
        // Sign-out successful.
        alert('You have Signed Out. Please Sign In');
      }).catch(function(error) {
        // An error happened.
        alert('An error happened');
      });
    </script>

您需要实现
StartPollingForCompletion()
函数来定期检查注销页面是否已加载。使用
setTimeout()
来计时轮询,并检查IFrame上的某些属性(我不知道哪些属性可以工作,因为您在跨站点工作)

另见以下问题:


我一直在尝试做同样的事情。仅适用于谷歌应用程序-
要注销,请尝试以下两个选项:
1) 使用i-frame-

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

您的浏览器不支持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>

打开窗户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');

我已经解决了当用户单击注销链接时调用此函数的问题:

var logout = function(){
document.location.href = "https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.example.com";
}
当用户单击链接时,浏览器会将用户重定向到注销页面,只有在注销完成时,用户才会重定向到网站“”


我希望这能有所帮助。

我也必须这样做,注销用户。不知怎的,这个被接受的答案不适合我,我从谷歌那里得到了一个错误

The page you requested is invalid.
所以我把这个放到了我的网页上:

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


它成功地注销了用户

由于我花了大量时间在我的应用程序的谷歌登录/注销问题上(这是一个节点/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);
如果您使用上面ira提供的解决方案,它将对浏览器的当前选项卡进行部分注销。这意味着,如果用户关闭选项卡并重新打开应用程序,他仍将登录到以前的帐户

我不得不使用一个外部窗口,因为在从电子邮件google帐户注销后,我无法正确重定向到我的应用程序。如果用户带宽不太慢,则此解决方案大多数情况下都有效,在关闭弹出窗口之前,允许注销3秒钟。然后用户需要在我的主窗口应用程序中使用另一个帐户登录


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

我就是这么做的,不记得是我编的还是在什么地方找到的。。。它就像一个符咒。。。除了它让你从所有谷歌网站上注销之外(我不敢相信他们没有提供一个正确的方法,但你就这样做了。)


函数makeFrame(domId,url){
ifrm=document.createElement(“IFRAME”);
setAttribute(“src”,url);
ifrm.setAttribute(“id”,域名);
setAttribute(“样式”,“显示:无;”);
ifrm.style.width=1+“px”;
ifrm.style.height=1+“px”;
文件.body.appendChild(ifrm);
} 
函数logOutGoogle(){
makeFrame('googleLogoutIFrame','https://www.google.com/accounts/Logout');
}
$(窗口).ready(函数(){
logOutGoogle();
});

我不知道我做的事情是否正确。但我成功地使用了如下代码:

<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>
<a class="btn btn-default navbar-btn text-white" id="signOut" href="../home.html" onclick="signOut('https://www.google.com/accounts/Logout');">Sign out</a>
    <script>
      function signOut() {
        var auth2 = gapi.auth2.getAuthInstance();
        auth2.signOut().then(function () {
          console.log('User signed out.');
        });
      }
      firebase.auth().signOut().then(function() {
        // Sign-out successful.
        alert('You have Signed Out. Please Sign In');
      }).catch(function(error) {
        // An error happened.
        alert('An error happened');
      });
    </script>

函数签出(){
var auth2=gapi.auth2.getAuthInstance();
auth2.signOut().then(函数(){
log('User signed out');
});
}
firebase.auth().signOut().then(函数(){
//成功注销。
警报(“您已注销。请登录”);
}).catch(函数(错误){
//发生了一个错误。
警报(“发生错误”);
});

我使用此代码从google帐户注销。它将抛出一个错误,但不要担心,错误发生后它将立即重定向到应用程序服务器端注销路由

<a href="https://www.google.com/accounts/Logout" target="myiframe">logout</a>
<iframe name="myiframe" style="display:none" onload="redirect()"></iframe>

<script>
  function redirect() {
    window.location = 'http://your.site.com/signout';
  };
</script>

函数重定向(){
window.location=http://your.site.com/signout';
};

我在想这样的事情:“target=”myframe“>注销Lol:D我以前见过stackoverflow的线程..我在那里没有得到正确的答案,而且它是旧的,所以打开了一个新的,希望至少在一年后得到答案:Dbtw,你建议我如何实现“StartPollingForCompletion()" ?? 我目前正在javascript中执行500毫秒后的重定向,但我知道这是盲目的..由于CORS(XSS)限制,检查任何与此iframe状态相关的内容都可能失败。对不起,dude,此线程早就得到了回答,他建议我在该项目中使用iframe方法。。。谢谢你宝贵的时间:)嗨。你能告诉我你是怎么做到的吗?我想做的是发送一个隐藏请求,让用户从GoogleAccount注销,然后带他到我想要的任何php页面。Ple