2013-06-11 42 views
6

我的應用程序已與Facebook,Google和Microsoft(使用OAuth)集成。註銷鏈接(返回網址)(OAuth)

爲了從Facebook註銷我使用以下網址:

https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken] 

是否有類似谷歌和微軟的東西嗎?

對於谷歌我想:

https://accounts.google.com/Logout?continue=http://localhost:51820 

但它沒有工作......它返回:The page you requested is invalid.

我怎樣才能像URL註銷?

+0

你使用OAuth的客戶端(僅JavaScript集成)或服務器端(與接入代碼和服務器上的令牌交換)?請注意,對於服務器端情況,向客戶端公開訪問令牌是錯誤的。 Facebook沒有提供正確的方式來註銷通過服務器端授權的用戶。 –

回答

17

我終於得到了正確的鏈接:

  • Facebook的:

https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken]

來源:A Working Facebook OAuth Logout URL

  • 谷歌:

https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=[http://www.mysite.com]

來源:google account logout and redirect

  • 微軟:

https://login.live.com/oauth20_logout.srf?client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URL]

來源:Server-side scenarios

這些鏈接可以像在JavaScript中使用:

function logout(){ 
document.location.href = "https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken]"; 
} 

建議實現這一點:Logout from external login service (Gmail, facebook) using oauth

+0

嗨@amp試用你的谷歌樣品,它工作正常!你有沒有同樣的LinkedIn帳戶...? –

+0

謝謝你。我浪費了一天的時間找到解決方案,重新定向到我的家而不是Google登錄。這真的起作用了。 – vashishatashu

3

您不應該將用戶從Facebook,Google等登錄出來。您只需要將其登出您的應用程序。通過將它們重定向到accounts.google.com/Logout,您實際上是將用戶從其帳戶中註銷,這意味着如果他們也在另一個選項卡(例如)中打開了Gmail,他們也將被註銷。同樣,如果你將它們重定向到www.facebook.com/logout.php,你實際上將它們從Facebook中註銷,這意味着如果他們在另一個選項卡中打開了Facebook,他們也將被註銷。

相反,當用戶退出應用程序時,您應該做的就是「忘記」OAuth令牌。

+1

我知道,但我首先問他們是否真的想從提供商註銷。例如,這可能對公共計算機很有用。 – amp

+3

實際上,Facebook會在其政策中聲明,如果您在應用程序上提供「註銷」按鈕,則必須從Facebook註銷用戶。不幸的是,如果用戶已經在服務器端獲得授權,他們不會提供正確的方法來做到這一點。 –

+0

我允許通過用戶名/密碼和社交媒體登錄我的網站上的一個帳戶。如果您編輯帳戶以更改密碼,並且使用用戶名/密碼登錄,則需要提供舊密碼(即重新驗證)。如果您通過Facebook登錄,則應該要求您使用Facebook重新進行身份驗證。但唯一的辦法是強制從Facebook註銷 - 如果您不這樣做,Oauth身份驗證會立即成功,因爲您的會話仍然登錄到Facebook。 – sootsnoot