2013-06-11 10 views
6

Moja aplikacja jest zintegrowana z Facebookiem, Google i Microsoftem (przy użyciu protokołu OAuth).Link do wylogowania z adresem zwrotnym (OAuth)

Aby wylogować się z Facebook Używam następujący adres URL:

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

Czy jest coś podobnego do Google i Microsoft?

dla Google Próbowałem:

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

Ale to nie działa ... Zwraca: The page you requested is invalid.

Jak mogę dostać ten URL wylogowania?

+0

Używasz OAuth na stronie klienta (tylko integracji JavaScript) lub po stronie serwera (z kodami dostępu i wymiany tokenów na serwerze)? Zauważ, że dla przypadku po stronie serwera, niewłaściwe jest ujawnianie tokenu dostępowego po stronie klienta. Facebook nie zapewnia właściwego sposobu wylogowania użytkowników, którzy uzyskali autoryzację za pośrednictwem serwera. –

Odpowiedz

17

I wreszcie odpowiednie linki:

  • Facebooku:

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

Źródło: A Working Facebook OAuth Logout URL

  • Google:

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

Źródło: google account logout and redirect

  • Microsoft:

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

Źródło: Server-side scenarios

te linki mogą być użyte tak w JavaScript:

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

Sugestia zaimplementować to: Logout from external login service (Gmail, facebook) using oauth

+0

Witam @amp wypróbowany z próbką Google, działa dobrze! Czy masz to samo dla konta LinkedIn ...? –

+0

Dzięki człowieku. Przez pół dnia marnowałem czas na znalezienie rozwiązania, by przekierować z powrotem do mojego domu zamiast loginu Google. To naprawdę działało. – vashishatashu

3

Nie należy logować użytkownika z Facebooka, Google itp. Wystarczy je wylogować z swojej aplikacji. Przekierowując je na numer accounts.google.com/Logout, w rzeczywistości rejestrujesz użytkownika z jego konta Google, co oznacza, że ​​gdyby Gmail był otwarty również na innej karcie (powiedzmy), również zostałby z niego wylogowany. Podobnie, jeśli przekierujesz je do www.facebook.com/logout.php, faktycznie wylogowujesz je z Facebook, co oznacza, że ​​gdyby Facebook miał otwartą w innej karcie, zostaną one również wylogowane.

Zamiast tego wszystko, co należy zrobić, gdy użytkownik wylogowuje się z aplikacji, "zapomina" tokenów OAuth.

+1

Wiem o tym, ale pytam najpierw, czy naprawdę chcą wylogować się od dostawcy. Może to być przydatne na przykład w publicznym komputerze. – amp

+3

Faktycznie Facebook stwierdza, że ​​w swojej polityce MUSISZ wylogować użytkowników z Facebooka, jeśli oferujesz przycisk "wylogowania" w swojej aplikacji. Niestety, nie zapewniają prawidłowego sposobu, aby to zrobić, jeśli użytkownicy zostali autoryzowani po stronie serwera. –

+0

Pozwalam zalogować się na jedno konto w mojej witrynie za pomocą zarówno nazwy użytkownika/hasła i mediów społecznościowych. Jeśli edytujesz swoje konto, aby zmienić hasło, a logujesz się za pomocą nazwy użytkownika/hasła, musisz podać stare hasło (to jest ponowne uwierzytelnienie). Jeśli zalogowałeś się przez Facebooka, powinieneś być zobowiązany do ponownego uwierzytelnienia się na Facebooku. Ale jedynym sposobem na to jest wymuszenie wylogowania z Facebooka - jeśli tego nie zrobisz, uwierzytelnianie Oauth po prostu się powiedzie natychmiast, ponieważ twoja sesja jest nadal zalogowana na facebooku. – sootsnoot

Powiązane problemy