2010-11-17 152 views
29

我正在使用openid登錄用戶。(僅限谷歌帳戶)。 現在我的頁面上有一個退出鏈接,點擊時,我希望用戶從Google帳戶中註銷,並將頁面重定向到我的主頁。 可以這樣做嗎?谷歌帳戶註銷並重定向

編輯-
更改接受的答案,因爲現在Google允許將[繼續]重定向到您想要的任何域。

回答

54

我已經解決了這個問題當用戶點擊註銷鏈接時調用此功能:

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

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()功能定期檢查註銷頁面是否已加載。使用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