Обзор OAuth: является ли пользователь тем, кем он / она считает себя ?:
Я не уверен, использовали ли вы OAuth для входа в Stack Overflow, например, вариант «Войти через Google», но когда вы используете эту функцию, Stack Overflow просто спрашивает Google, знает ли он, кто вы:
«Эй, Google, этот парень из Винеша утверждает, что vinesh.e@gmail.com - это он, это правда?»
Если вы уже вошли в систему, Google скажет ДА. Если нет, Google скажет:
«Подожди секунду, переполнение стека, я аутентифицирую этого парня, и если он сможет ввести правильный пароль для своей учетной записи Google, то это он».
Когда вы вводите свой пароль Google, Google сообщает Stack Overflow, что вы тот, кем вы себя называете, и Stack Overflow регистрирует вас.
Когда вы выйдите из вашего приложения, вы входите из вашего приложения:
Здесь разработчики, не знакомые с OAuth, иногда могут немного запутаться ... Google и Stack Overflow, Assembla, Vinesh's-very-cool-slick-webapp - это разные сущности, и Google ничего не знает о вашей учетной записи в крутом веб-приложении Vinesh, и наоборот. наоборот, помимо того, что предоставляется через API, который вы используете для доступа к информации профиля.
Когда ваш пользователь выходит из системы, он или она не выходит из Google, он выходит из вашего приложения, или Stack Overflow, или Assembla, или любого другого веб-приложения, использующего Google OAuth для аутентификации пользователя.
Фактически, я могу выйти из всех своих учетных записей Google и по-прежнему находиться в Stack Overflow. Как только ваше приложение узнает, кто является пользователем, этот человек может выйти из Google. Гугл больше не нужен.
С учетом сказанного, вы просите вывести пользователя из службы, которая вам не принадлежит. Подумайте об этом так: как пользователь, как вы думаете, насколько я был бы раздражен, если бы я вошел в 5 разных сервисов с моей учетной записью Google, то при первом выходе из одной из них мне нужно войти в свою учетную запись Gmail опять же, потому что этот разработчик приложения решил, что, когда я выхожу из его приложения, я также должен выйти из Google? Это очень быстро устареет. Короче, вы действительно не хотите этого делать ...
Да, да ладно, я все еще хочу вывести пользователя из Google, просто скажите мне, как мне это сделать?
С учетом сказанного, если вы все еще хотите выйти из системы Google и понимаете, что вполне можете нарушить его рабочий процесс, вы можете динамически создать URL-адрес выхода из одной из их кнопок выхода из службы Google, а затем вызвать его, используя элемент img или тег скрипта:
<script type="text/javascript"
src="https://mail.google.com/mail/u/0/?logout&hl=en" />
ИЛИ ЖЕ
<img src="https://mail.google.com/mail/u/0/?logout&hl=en" />
ИЛИ ЖЕ
window.location = "https://mail.google.com/mail/u/0/?logout&hl=en";
Если вы перенаправляете своего пользователя на страницу выхода или вызываете его из элемента, не имеющего междоменного ограничения, пользователь выйдет из системы Google.
Обратите внимание, что это не обязательно означает, что пользователь выйдет из вашего приложения, только Google. :)
Резюме:
Вам важно помнить, что при выходе из приложения вам не нужно заставлять пользователя повторно вводить пароль. В этом весь смысл! Он выполняет аутентификацию в Google, поэтому пользователю не нужно снова и снова вводить свой пароль в каждом веб-приложении, которое он использует. К этому нужно привыкнуть, но знайте, что, пока пользователь вошел в систему Google, вашему приложению не нужно беспокоиться о том, является ли пользователь тем, кем он / она себя называет.
У меня такая же реализация в проекте, как и у вас, с использованием информации профиля Google с OAuth. Я попробовал то же самое, что и вы, и это действительно начало рассердить людей, когда им приходилось заходить в Google снова и снова, поэтому мы перестали выводить их из Google. :)