Ответ 1
SHORT ANSWER
- Вы должны привязать пользователя социального входа к вашей стандартной пользовательской таблице и сгенерировать токен (JWT), как вы уже делаете
- Социальные логины всегда возвращают идентификатор, идентифицирующий пользователя в социальной сети. Во внешней таблице сохраните используемую социальную среду и социальную идентификацию, а также таблицу user_id из ваших основных пользователей.
ДОЛГОЙ ОТВЕТ
Пусть начнется с самого начала, чтобы лучше просмотреть всю проблему и устранить все аспекты ваших сомнений.
Основная таблица пользователей
Обычно у вас есть таблица пользователей, структурированная таким образом (упрощенная)
- user_id
- логин (электронная почта)
- пароль
- jwt_token
Когда пользователь вводит логин, вы собираетесь обновить поле jwt_token и вернуть его пользователю, чтобы потреблять ваши API.
Реализация социальных логинов
Хорошим подходом для добавления социальных логинов является создание новой таблицы social_logins, структурированной следующим образом (упрощенной)
- социальная
- social_id
- user_id
После того как вы "социальный логин" пользователя, вы получите список данных из самой социальной сети. Обратите внимание, что пользователи могут запретить получение частного адреса электронной почты (например, из Facebook), даже если вы явно запрашиваете его.
Первое, что вам нужно сделать, это проверить, возвратил ли вам социальный адрес пользователя.
- если возвращается электронное письмо, найдите пользователя с этим адресом электронной почты в таблице ваших пользователей и создайте запись в таблице "social_logins", создав связь с пользователем, используя поле user_id.
- Если письмо пустое, вам нужно создать нового пользователя в таблице пользователя, создав "поддельный" адрес электронной почты (со стандартным методом - не случайным), а затем создайте запись social_login
Чтобы избежать создания двойных пользователей (разные адреса электронной почты), я всегда предпочитаю просить пользователя подтвердить его адрес электронной почты: с помощью этого простого вопроса вы можете отложить предыдущую проверку и уменьшить количество двойных пользователей. Итак, если социальный логин не возвращает вам адрес электронной почты, вы просто показываете пустое поле с просьбой заполнить его своим адресом электронной почты, который затем будет использоваться для поиска пользователя в таблице пользователей. Если вместо этого вы получили его, просто покажите пользователю одно и то же поле и попросите его подтвердить адрес электронной почты или изменить его, если он предпочитает использовать другой адрес или если он уже зарегистрирован в вашем приложении с другим адресом электронной почты.