35

openidを使用してユーザーをログインしています(Googleアカウントのみ)。これで、ページにサインアウトリンクがあります。これをクリックすると、ユーザーはGoogleアカウントからログアウトし、ページはホームページにリダイレクトされます。これはできますか?

編集
-承認された回答を変更します。これは、Googleが[続行]を任意のドメインにリダイレクトできるようになったためです。

4

8 に答える 8

66

ユーザーがログアウトリンクをクリックしたときに、この関数を呼び出してこの問題を解決しました。

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 " にリダイレクトされます。

これが役立つことを願っています。

于 2013-02-12T11:21:52.767 に答える
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>

StartPollingForCompletion()ログアウトページが読み込まれたかどうかを定期的に確認する機能を実装する必要があります。ポーリングの時間を計り、IFrame のいくつかのプロパティをチェックするために使用setTimeout()します (ここではクロスサイトで作業しているため、どれが機能するかはわかりません)。

次の質問も参照してください。

OpenID。どうやってログアウトしますか

OpenID 対応サイトにログアウト機能を追加するには?

于 2010-11-17T07:26:19.477 に答える
2

このアプリ (Google ドキュメントと Google スクリプト API を大量に使用する Node/MongoDB サーバー) のこの Google ログイン/ログアウトの問題に膨大な時間を費やしたので、ここで結果を共有する必要がありました..

ユーザーを完全にログアウトする唯一の良い方法は、これを使用することです:

 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 秒かかります。次に、ユーザーはメイン ウィンドウ アプリで別のアカウントでログインする必要があります。

これは floccinaucinihilipilification のソリューションを確認し、おそらく上記の iframe ソリューションは私のソリューションよりも優れているはずです。

于 2015-06-27T21:46:14.317 に答える
1

私は同じことをしようとしてきました。Googleアプリの場合のみ-
ログアウトするには、次の2つのオプションを試してください
。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>

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>
于 2011-02-14T10:17:30.097 に答える
1

これが私がしていることです。私が作ったのか、どこかで見つけたのか覚えていません...それは魔法のように機能します...すべての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>
于 2016-01-05T04:02:04.000 に答える
0

同じことをして、ユーザーをログアウトするだけでした。どういうわけか、受け入れられた答えがうまくいかず、Googleからエラーが発生しました

The page you requested is invalid.

だから私はこれを自分のページに入れました:

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

これにより、ユーザーが正常にログアウトされます。ソース

于 2014-03-31T13:01:49.903 に答える