2012-05-25 1 views
0

Я использую DotNetOpenAuth для входа пользователей с FB и Google.Авто Войти пользователя на сайт, когда пользователь вошел в систему FB или Google - DotNetOpenAuth

Когда пользователь посещает веб-сайт, есть ли способ обнаружить, что он/она уже вошли в FB или Google и автоматически регистрируют их?

Спасибо

ответ

2

Да, если пользователь имеет уже явно вошли в ваш веб-сайт с помощью Google или Facebook раньше. В целях конфиденциальности ни один из провайдеров не позволит вам неявно регистрировать своих пользователей без каждого пользователя, явно не записящего на ваш веб-сайт хотя бы один раз (и при нажатии «помнить меня» на странице входа в систему).

Как только пользователь одобрил это, он станет возможен, но все еще не очень простой. Подход подразумевает создание скрытого iframe на вашей странице (возможно, когда пользовательский сеанс сначала создается, вы добавляете iframe на любую страницу, которую просматривает пользователь, или только ваша популярная целевая страница). Этот iframe указывается на URL-адресе вашего сайта, который ничего не делает, кроме как инициировать поток входа в систему без участия пользователя. Для Google это означает, что ваш сервер совершает звонок OpenIdRelyingParty.CreateRequest с идентификатором Google OP, и вы устанавливаете IAuthenticationRequest.Mode = AuthenticationRequestMode.Immediate на возвращенный объект перед вызовом IAuthenticationRequest.RedirectToProvider. Бит Immediate сообщает Провайдеру не ожидать взаимодействия с пользователем (поскольку ваш iframe невидим) и либо дать немедленный ответ «да», либо «нет». Затем в перенаправлении на ваш сайт (все еще в скрытом iframe) вы увидите, что пользователь зарегистрировался в Google (или нет) и получил свой Идентификатор заявки и зарегистрировал их на своем сайте.

Для Facebook, который использует старый проект OAuth 2, процесс может быть аналогичным, но использовать классы OAuth 2. Я еще не сделал этого, поэтому я не могу дать обзор.

Смежные вопросы