Omówienie protokołu OAuth: czy użytkownik jest tym, za kogo się podaje ?:
Nie jestem pewien, czy użyłeś OAuth do zalogowania się do Stack Overflow, na przykład opcji „Zaloguj się przez Google”, ale kiedy używasz tej funkcji, Stack Overflow po prostu pyta Google, czy wie, kim jesteś:
„Yo Google, ten gość z Vinesh twierdzi, że to on vinesh.e@gmail.com, czy to prawda?”
Jeśli jesteś już zalogowany, Google powie TAK. Jeśli nie, Google powie:
„Poczekaj sekundę Przepełnienie stosu, uwierzytelnię tego gościa i jeśli będzie mógł wprowadzić prawidłowe hasło do swojego konta Google, to będzie to on”.
Gdy wpiszesz swoje hasło Google, Google powie Stack Overflow, za kogo się podajesz, a Stack Overflow Cię zaloguje.
Po wylogowaniu z aplikacji, jesteś zalogowaniu z Twojej aplikacji:
Oto, gdzie programiści nowi w OAuth czasami są trochę zdezorientowani ... Google i Stack Overflow, Assembla, bardzo fajna-zgrabna-aplikacja internetowa Vinesha, to różne podmioty, a Google nic nie wie o Twoim koncie w fajnej aplikacji internetowej Vinesha i wice odwrotnie, poza tym, co jest ujawniane za pośrednictwem interfejsu API, którego używasz do uzyskiwania dostępu do informacji o profilu.
Kiedy użytkownik się wylogowuje, nie wylogowuje się z Google, wylogowuje się z Twojej aplikacji, Stack Overflow, Assembla lub jakiejkolwiek innej aplikacji internetowej używającej Google OAuth do uwierzytelnienia użytkownika.
W rzeczywistości mogę wylogować się ze wszystkich moich kont Google i nadal być zalogowanym do Stack Overflow. Gdy Twoja aplikacja będzie wiedzieć, kim jest użytkownik, ta osoba będzie mogła wylogować się z Google. Google nie jest już potrzebne.
Mając to na uwadze, prosisz o wylogowanie użytkownika z usługi, która tak naprawdę nie należy do Ciebie. Pomyśl o tym w ten sposób: jako użytkownik, jak myślisz, jak bardzo byłbym zirytowany, gdybym zalogował się do 5 różnych usług za pomocą mojego konta Google, a potem gdy pierwszy raz wylogowałem się z jednej z nich, muszę zalogować się na swoje konto Gmail znowu dlatego, że ten programista aplikacji zdecydował, że kiedy wyloguję się z jego aplikacji, powinienem również zostać wylogowany z Google? To szybko się zestarzeje. Krótko mówiąc, naprawdę nie chcesz tego robić ...
Tak, tak, nieważne, nadal chcę wylogować użytkownika z Google, po prostu powiedz mi, jak mam to zrobić?
Mając to na uwadze, jeśli nadal chcesz wylogować użytkownika z Google i zdasz sobie sprawę, że możesz bardzo dobrze zakłócać jego przepływ pracy, możesz dynamicznie utworzyć adres URL wylogowania z jednego z ich przycisku wylogowania z usług Google, a następnie wywołać go za pomocą element img lub tag skryptu:
<script type="text/javascript"
src="https://mail.google.com/mail/u/0/?logout&hl=en" />
LUB
<img src="https://mail.google.com/mail/u/0/?logout&hl=en" />
LUB
window.location = "https://mail.google.com/mail/u/0/?logout&hl=en";
Jeśli przekierujesz użytkownika na stronę wylogowania lub wywołasz go z elementu, który nie jest ograniczony między domenami, użytkownik zostanie wylogowany z Google.
Pamiętaj, że nie musi to oznaczać, że użytkownik zostanie wylogowany z Twojej aplikacji, tylko Google. :)
Podsumowanie:
Ważne jest, aby pamiętać, że po wylogowaniu się z aplikacji nie trzeba zmuszać użytkownika do ponownego wprowadzania hasła. O to chodzi! Uwierzytelnia się w Google, więc użytkownik nie musi w kółko wpisywać swojego hasła w każdej używanej przez siebie aplikacji internetowej. Przyzwyczajenie się do tego wymaga trochę czasu, ale pamiętaj, że dopóki użytkownik jest zalogowany w Google, Twoja aplikacja nie musi się martwić o to, czy użytkownik jest tym, za kogo się podaje.
Mam taką samą implementację w projekcie jak Ty, używając informacji z profilu Google z OAuth. Wypróbowałem to samo, co chcesz spróbować, i naprawdę zaczęło denerwować ludzi, gdy musieli ciągle logować się do Google, więc przestaliśmy wylogowywać ich z Google. :)