Подтвердить что ты не робот

Выход из аккаунта google и перенаправление

Я использую openid для входа пользователя в систему (только для учетной записи google). Теперь у меня есть ссылка на моей странице, которая при нажатии, я хочу, чтобы пользователь был выведен из учетных записей Google и страница, которая будет перенаправлена ​​на мою домашнюю страницу. это можно сделать?

Edit-
Изменение принятого ответа, поскольку теперь Google позволяет перенаправить [продолжение] в любой домен, который вы хотите.

4b9b3361

Ответ 1

Я решил эту проблему вызвать эту функцию, когда пользователь нажимает ссылку на выход:

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

Проблемы

Запрос https://www.google.com/accounts/Logout приведет к регистрации пользователя. Существует параметр continueUrl, который иногда добавляет Google к этому адресу, но ему удастся перенаправить пользователя только в том случае, если целью является какой-то сайт 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. Как выйти из системы

Как добавить функцию выхода на сайт с поддержкой OpenID?

Ответ 3

Я пытался сделать то же самое. Только для приложений Google -
Чтобы выйти из системы, попробуйте следующие два варианта:
1) Использование i-кадра -

<iframe src="https://mail.google.com/a/YOURDOMAIN.IN/?logout&hl=en" width="100%" height="300">
  <p>Your browser does not support iframes.</p>
</iframe>

2) Использование Javascript -

<script type="text/javascript">
     window.open('https://mail.google.com/a/YOURDOMAIN.IN/?logout&hl=en','logout_from_google','width=600,height=300,menubar=no,status=no,location=no,toolbar=no,scrollbars=no,top=20,left=20');
</script>

Ответ 4

Мне просто нужно было сделать то же самое, выйти из системы. почему-то принятый ответ не работает для меня, у меня есть ошибка из google

The page you requested is invalid.

поэтому я положил это на свою страницу:

<img src="https://www.google.com/accounts/Logout" />

который успешно выведет пользователя. источник

Ответ 5

Поскольку я потратил огромное количество времени на эту ошибку входа/выхода google для моего приложения (которое является сервером Node/MongoDB, используя массовые Документы Google и Google Script API), мне пришлось поделиться моими результатами здесь.

Единственный хороший способ полностью выйти из системы - использовать это:

 var newWindow = window.open('https://mail.google.com/mail/?logout&hl=fr','Disconnect from Google','width=100,height=50,menubar=no,status=no,location=no,toolbar=no,scrollbars=no,top=200,left=200');
setTimeout(function(){
    if (newWindow) newWindow.close();
    window.location="auth/google";
},3000);

Если вы используете решение, указанное выше ira, он делает частичный выход из системы, который кажется для текущей вкладки браузера. Это означает, что если пользователь закроет вкладку и снова откроет приложение, он все равно будет зарегистрирован в предыдущей учетной записи.

Мне пришлось использовать внешнее окно, потому что я не смог правильно перенаправить свое приложение после выхода из учетной записи google электронной почты. Это решение работает большую часть времени, если пропускная способность пользователя не слишком медленная, позволяя 3 секундам завершить выход, прежде чем закрывать всплывающее окно. Затем пользователю необходимо войти в систему с другой учетной записью в моем приложении главного окна.

Это подтверждает решение floccinaucinihilipilification и, возможно, решение iframe, приведенное выше, должно быть лучше, чем мое.

Ответ 6

Вот что я делаю, не помню, если я это сделал или нашел где-то... Это работает как шарм... кроме того факта, что он выводит вас из всех сайтов Google (я могу " полагаю, что они не обеспечивают правильный способ сделать это, но там вы идете.)

<script>
function makeFrame(domId,url) { 
    ifrm = document.createElement("IFRAME"); 
    ifrm.setAttribute("src", url);
    ifrm.setAttribute("id", domId);
    ifrm.setAttribute("style", "display:none;");         
    ifrm.style.width = 1+"px"; 
    ifrm.style.height = 1+"px"; 
    document.body.appendChild(ifrm); 
} 

function logOutGoogle(){
    makeFrame('googleLogoutIFrame','https://www.google.com/accounts/Logout');
}
$(window).ready(function() {
    logOutGoogle();
});
</script>