Нужен ли нам поток на стороне клиента, поток на стороне сервера или оба для реализации функции входа в систему с помощью Facebook?
-
12-12-2019 - |
Вопрос
В настоящее время на моем веб-сайте пользователи входят в систему, используя свой идентификатор входа и пароль, им также необходимо ввести свой email
когда они зарегистрируются.Оба login_id
и email
столбец на users
таблица имеет уникальный индекс. users
таблица также хранит другие данные, связанные с пользователем, такие как gender
,last_name
,first_name
но это необязательные поля (обнуляемые).
Есть два изменения, которые я хотел бы внести на сайт.
Во-первых, пользователи могут использовать свою электронную почту (помимо login_id
) чтобы залогиниться.Новым пользователям при регистрации больше не нужно предоставлять login_id
потому что они будут использовать свой адрес электронной почты для входа.
Второе изменение: они могут войти в систему через Facebook.Для новых пользователей, если они впервые войдут в систему с помощью Facebook, их идентификатор Facebook будет получен и сохранен в моей базе данных.Это означает, что мне придется добавить facebook_uid
столбец на users
стол.
Для существующих пользователей, когда они впервые входят в систему с помощью Facebook, я должен сначала получить их адрес электронной почты из их профиля Facebook, а затем проверить, существует ли уже запись с использованием этого адреса электронной почты в users
таблица, если да, их идентификатор Facebook также будет сохранен в facebook_uid
столбец в этой записи.
По данным Facebook, его платформа поддерживает два разных потока OAuth 2.0 для входа пользователя:поток на стороне сервера и поток на стороне клиента.Какой из них или оба необходимы для этого варианта использования?
Кроме того, какие проблемы можно ожидать при реализации функций, описанных выше?
Решение
Вы можете использовать любой подход, это полностью зависит от вас.Оба метода дадут вам необходимые данные, вопрос в том, насколько комфортно вам работать на внутренней стороне или на внешней стороне.Вам просто нужно запросить разрешение на доступ к адресу электронной почты пользователя.
Проблемы, которые могут произойти:Я не уверен, но могут существовать юридические ограничения на хранение идентификатора пользователя Facebook.Кроме того, что, если кто-то (не я, злой человек!) зарегистрируется с моим адресом электронной почты, и вы не подтвердите, что у него действительно есть доступ к этому адресу - тогда, когда я войду в систему через Facebook, приложение предположит, что мы являемся тот же человек и злой хакер теперь имеют доступ к моей учетной записи.Маловероятный сценарий, но может случиться...