Facebook Войти как дополнение к существующему логину? - PullRequest
8 голосов
/ 24 июля 2010

Я занимаюсь разработкой сайта электронной коммерции на PHP / MySQL с некоторыми социальными аспектами и собираюсь интегрировать его с Facebook. У меня уже есть собственная система регистрации пользователей / обработки сеансов. Мне удалось включить iframe "Социальные плагины", такие как кнопка "Нравится". Но я действительно хотел бы предложить пользователям возможность регистрации на сайте через Facebook в процессе регистрации.

Я понимаю идею получения токена доступа по протоколу OAuth и, в конечном итоге, получения идентификатора пользователя. Мои опасения двояки:

  1. Безопасен ли этот метод? Это сайт электронной коммерции, но я не храню кредитные карты и другие конфиденциальные данные. Я не могу придумать, как это можно использовать, но я только одна голова!

  2. Я понимаю, как получить начальный токен и получить идентификатор пользователя в процессе регистрации. Но как мне распознать возвращающегося (сеансового) пользователя? Должен ли я реализовать Javascript SDK для этого (чего я хочу избежать)? Или я обрабатываю сеансы так же, как они уже обрабатываются изначально, но заменяет обычный идентификатор пользователя в файле cookie сеанса идентификатором пользователя Facebook, когда это необходимо?

Я прошу прощения, если ответы очевидны. Я изучил документацию Google и Facebook, но половина ссылок, которые я нахожу, относится к устаревшим вики-статьям FBConnect, и новые документы полезны, но немногочислены на примерах. Понятия не имею, что еще поддерживается, что нового и как это сделать!

1 Ответ

14 голосов
/ 25 июля 2010
  1. Да, Oauth очень безопасен.Многие приложения полагаются на него, и нет известных способов его использования.

  2. Один из способов сделать это - сохранить идентификаторы пользователей Facebook, чтобы, когда они вернутся, вы могли видеть, чтоих идентификатор уже существует в ваших записях, и вы знаете, что это возвращающийся пользователь.Их сеанс может отличаться (например, истек с момента последнего посещения), поэтому вы не хотите хранить их токен доступа;но их идентификатор пользователя в Facebook всегда одинаков.

Как я в основном интегрировал регистрацию / вход в Facebook на своем сайте, я добавил столбец facebook_id в таблицу пользователей и "Зарегистрироваться в Facebook"кнопка.Если пользователь нажимает кнопку аутентификации с помощью Facebook, и я возвращаюсь к сеансу, а пользователь новый, я перенаправляю на страницу регистрации, заполняю как можно больше полей данными из Facebook (например, их именем) и добавляю идентификатор Facebook какскрытое поле ввода.Поэтому, когда они регистрируются, их facebook_id будет заполнен в базе данных.Это та же страница регистрации, что и у стандартной, поэтому единственное отличие от пользователя, не являющегося Facebook, состоит в том, что поле facebook_id будет пустым.Если вы хотите, вы также можете не требовать пароль для пользователей Facebook.

Чтобы пользователь мог войти в систему, пользователь просто нажал кнопку «Войти через Facebook» и аутентифицировался в Facebook.После того, как Facebook дает мне сеанс, я регистрируюсь как любой пользователь с идентификатором facebook_id в сеансе Facebook.Поскольку вы беспокоитесь о безопасности, отмечу, что этот сеанс невозможно подделать, поскольку он подписан секретным ключом приложения, который знают только вы и Facebook.Если вы используете SDK Facebook (что вам и нужно), вам не нужно беспокоиться о подписании и проверке подписи.Тот факт, что вы можете прочитать согласованную информацию из сеанса, означает, что SDK Facebook проверил ее.

Эта страница Facebook является отличным руководством по интеграции регистрации с Facebook.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...