2010-11-17 7 views
29

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

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

ответ

54

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

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

Спасибо, но вы опаздываете на вечеринку :) Мне это было 2 года назад :) – Shrinath

+6

извините, но в последнее время у меня такая же проблема, и я не нашел верного решения в Интернете. Я надеюсь, что это решение будет полезно для таких людей, как я: D – ira

+0

Хорошо, вы имеете в виду, что Google теперь позволяет вам «продолжить» в любой домен? – Shrinath

19

Проблемы

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. How do you logout

How to add logout feature to an OpenID enabled site?

+0

ах .. кажется хорошая идея .. будет пытаться вернуться .. – Shrinath

+0

Я имею в виду что-то вроде этого : logout Shrinath

+0

как форматировать текст в комментариях чувак ?? – Shrinath

1

Я пытался сделать то же самое. В Google Apps только -
Для выхода попробовать следующие два варианта:
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

извините dude, эта ветка ответила долго назад, и он предложил метод iframe, который я использовал в этом проекте ... Спасибо за ваше драгоценное время :) – Shrinath

+0

Привет. Не могли бы вы рассказать мне, как вы это сделали? То, что я хочу сделать, это отправить скрытый запрос, чтобы вывести пользователя из аккаунта google, а затем взять его на любую страницу php, которую я хочу. Пожалуйста помоги ! –

0

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

The page you requested is invalid. 

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

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

успешно выходит из пользователя. source

0

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

0

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