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