Выйти из Google учетной записи и перенаправить - PullRequest
33 голосов
/ 17 ноября 2010

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

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

Ответы [ 8 ]

63 голосов
/ 12 февраля 2013

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

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".

Надеюсь, это поможет.

19 голосов
/ 17 ноября 2010

Испытания

Запрос 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?

1 голос
/ 28 июня 2015

Поскольку я потратил огромное количество времени на эту проблему входа / выхода из Google для моего приложения (который является сервером Node / MongoDB, использующим в основном Google Docs и 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 должно быть лучше, чем мое.

1 голос
/ 14 февраля 2011

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

<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>
0 голосов
/ 30 марта 2019

Я использую этот код для выхода из аккаунта Google.Он выдаст ошибку, но не волнуйтесь, он будет перенаправлен сразу после того, как ошибка произошла, прямо на ваш маршрут выхода на стороне сервера приложений.

<a href="https://www.google.com/accounts/Logout" target="myiframe">logout</a>
<iframe name="myiframe" style="display:none" onload="redirect()"></iframe>

<script>
  function redirect() {
    window.location = 'http://your.site.com/signout';
  };
</script>
0 голосов
/ 14 сентября 2018

Я не знаю, правильно ли я поступил. Но мне удалось использовать такой код:

<a class="btn btn-default navbar-btn text-white" id="signOut" href="../home.html" onclick="signOut('https://www.google.com/accounts/Logout');">Sign out</a>
    <script>
      function signOut() {
        var auth2 = gapi.auth2.getAuthInstance();
        auth2.signOut().then(function () {
          console.log('User signed out.');
        });
      }
      firebase.auth().signOut().then(function() {
        // Sign-out successful.
        alert('You have Signed Out. Please Sign In');
      }).catch(function(error) {
        // An error happened.
        alert('An error happened');
      });
    </script>
0 голосов
/ 05 января 2016

Вот что я делаю, не помню, придумал ли я это или нашел где-то ... Это работает как шарм ... кроме того, что он выводит вас из всех сайтов 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>
0 голосов
/ 31 марта 2014

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

The page you requested is invalid.

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

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

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

...