Как осуществляется регистрация/авторизация через соц. сети с помощью oAuth2 если одна из соц.сетей не отдает email/phone?
Сайт делаю на Laravel, для авторизации по oAuth2 использую пакет Socialite с нужными провайдерами.
Возникли следующие вопросы:
1) Как зарегистрировать/авторизовать пользователя на сайте, например через соц. сеть Фейсбук, если у него в акаунте указан только телефон (без емейла), а файсбук, телефон пользователя не возвращает?
2) например на сайт Одноклассники через Фейсбук зайти возможно. Но тогда у пользователя получается нет ни телефона ни емейла, соответственно он без Фейсбука логинится в Однокласниках не сможет (если там не укажет логин и пароль)!?
3) Правильно ли я понял, что большинство сайтов (фейсбук, вк, гугл,...) не возвращают телефон пользователя?
1) Зачем вам для регистрации мыло/телефон? Правильно, незачем — есть ID социалки, есть название драйвера, этого достаточно. А вот если они нужны для дальнейшего использования вашего приложения, то и потребуйте от пользователя их указать дополнительно в процессе регистрации/после неё.
2) Спросите у Одноклассников.
3) Да. Многие даже мыло не отдают — Одноклассники только с дополнительными телодвижениями, Твиттер вообще никак. Upd: В каментах подсказывают, что теперь Твиттер отдаёт, если его об этом хорошо попросить.
Immortal_pony, про Твиттер не знал, спасибо. Но, опять же, с лишними телодвижениями и на усмотрение администрации Твиттера, как и в Одноклассниках.
Что же касается
Чтобы при заходе через любую социальную сеть или форму на сайте система однозначно определяла, что это один и тот же пользователь.
я в курсе, зачем и как, но это дополнительная плюшка, для базового процесса регистрации не важная. Необходимо — попросите у пользователя дополнительно, вплоть до невозможности завершить регистрацию без этих данных.
JhaoDa, Попутно хотел бы прокомментировать/спросить, может немного глупый вопрос, но все же: при этом подходе поля, например email, phone,... в таблице users уже не будут уникальными (unique) на уровне бд.
На сколько это может повлиять на производительность системы при выборке пользователя? а она на посещаемых сайтах может делаться очень часто...
JhaoDa, да, вы правы, поле unique может быть пустым, просто я ранее как то пробивал, видимо у меня в поле записывалась пустая строка (!=null), вот и я себе так решил. Теперь перепроверил, все ок. Спасибо за советы.