Вопрос

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

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

Это было полезно?

Решение

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

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

Более того, спецификация OpenID на данный момент не включает глобальный выход из системы.

Есть другой способ:

Предположение

Включите IFrame на свою страницу и используйте обработчик событий JavaScript onClick в ссылке выхода для загрузки. https://www.google.com/accounts/Выход в 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 –
Чтобы выйти из системы, попробуйте следующие два варианта:
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 для моего приложения (которое представляет собой сервер Node/MongoDB, массово использующий Google Docs и API Google Script), мне пришлось поделиться своими результатами здесь.

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

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

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

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

The page you requested is invalid.

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

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

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

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

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

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

Я использую этот код для выхода из учетной записи 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top