Выйти из Google учетной записи и перенаправить

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

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

7 ответов

Решение

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

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

Я надеюсь, что это может помочь.

проблемы

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

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

Я пытался сделать то же самое. Только для приложений 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>

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

Я использую этот код для выхода из аккаунта 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>

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

The page you requested is invalid.

таким образом я закончил тем, что поместил это в мою страницу:

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

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

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

<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>
Другие вопросы по тегам