za4me
@za4me
Человек

Как наиболее эффективно работать с api соц. сетей для регистрации и входе на сайт?

День добрый.

Подскажите, пожалуйста.
Использую для регистрации на сайте и последующей аутентификации yii2-authclient.

Есть несколько вопросов:
1. Каким образом лучше всего проводить проверку соц. сети? т.к. для каждой соц. сети в массиве содержатся
$attributes = $client->getUserAttributes();
разные данные и думаю прямо в контроллере писать if или switch для определения какую соц. сеть использует в данный момент пользователь не самая лучшая затея.

2. Что делать если соц. сеть не отдает email? К примеру в VK пользователь может и не привязать к странице email. Если правильно понял, то twitter вообще не отдает email пользователя.

Twitter не допускает возвращение электронной почты пользователя, но так или иначе Вы должны с этим как то работать.

Отказаться от обязательности email? Что тогда делать с восстановлением пароля к примеру если пользователь не укажет email при обычной регистрации?

Всем спасибо за советы.
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
bitver
@bitver
1. Переопределите дефолтные клиенты под свои нужды.
2. Если мыло обязательно, поставьте прослойку - проверку на наличие мыла и редиректите все запросы на страничку с просьбой вписать мыло.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
taliban
@taliban
php программист
У каждой соц сети есть уникальняй идентификатор, к нему и привязывайтесь. Пароль вообще не нужен, ибо пользователь логинится через oauth через сторонний рессурс, и вам по сути приходит ответ, да залогинен, нет не залогинен. Это нормальная ситуация, ресурсы которые дают возможность войти через сторонний сайт и затем берут оттуда емейл и создают локальный аккаунт, делают это не совсем корректно.
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Как вариант - не заморачиваться и подключить например через ulogin (https://ulogin.ru):
тогда при регистрации пользователя будете получать стандартизированные данные не зависимо от соц сети и всегда получать email.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы