motto13
@motto13
Вечно молодой

Какая структура базы данных для авторизации через email/password и соц. сети?

На сайте сейчас есть возможность зарегистрироваться и войти через email/password (стандартная форма входа и регистрации). В общем все данные с соц. сетей получаю, это id, email, name ну и сам провайдер (google, facebook и тд). Теперь возникла задача как доработать структуру базы данных чтобы можно было регистрировать пользователей через соц сети плюс возможность в профиле "связать" все эти соц аккаунты в один.
Например пользователь уже зарегистрирован под одним email и затем вышел из учетной записи. У него есть аккаунт в соц. сети с регистрацией через этот-же email. Теперь, если пользователь решил войти на сайт с этого соц. аккаунта, то он попадает в тот свой аккаунт, что создал ранее (email же один и тот же) или это уже другой аккаунт?
Второе если например третий соц аккаунт зарегистрирован на другой email, это уже другой аккаунт? или в профиле он решил этот соц аккаунт привязать к аккаунту, дописывать поле в базе с например дополнительным полем email2?
И еще такой вопрос если например у пользователя нет в соц аккаунте email (зарегистрирован через телефон), как его зарегистрировать? В общем нужны советы может есть какие примеры?
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
@TheAndrey7
Теперь возникла задача как доработать структуру базы данных чтобы можно было регистрировать пользователей через соц сети плюс возможность в профиле "связать" все эти соц аккаунты в один.

Явно лучше не трогать таблицу с локальными пользователями, которые регистрировались по email/password. У меня для привязок сторонних аккаунтов заведена такая таблица: user_id, provider, account_id (ID юзера в соцсети). По такой таблице не проблема найти аккаунт локального пользователя и пользователь может привязать несколько аккаунтов от разных соцсетей.

И еще такой вопрос если например у пользователя нет в соц аккаунте email (зарегистрирован через телефон), как его зарегистрировать? В общем нужны советы может есть какие примеры?
Не то что нет, а некоторые API его просто не дают. Тут либо требовать от пользователя указать E-mail, либо разрешать создание пользователей с пустым E-mail.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@qid00000000
Мало что знаю, но информацию найду в гугле
Найдите на Ютубе (пока ещё работает) курсы по фреймворку, которым вы пользуетесь и поищите там авторизацию в соц сетях.

Если не нашли - то уже нужно лезть в api соц. сети и копаться там и разбираться.
Ответ написан
Комментировать
Revencu
@Revencu
Если тот же емайл при логине через соцсети, то вы же получаете емайл (токен нужно валидировать через API на сервере) по которому был осуществлён логин. Ищите его в вашей таблице. Получив данные из таблицы создавайте сессию как обычно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы