Вход в систему Facebook как дополнение к существующему входу в систему?

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

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

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

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

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

8
задан Dave W. 24 July 2010 в 18:28
поделиться

1 ответ

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

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

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

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

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

14
ответ дан 5 December 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: