Лучшая практика Вход в Facebook, Twitter, Google или зарегистрируйтесь

Мне удалось запрограммировать логин с системой Facebook в моем PHP-приложении. Но теперь я немного застрял в лучших практиках.

Нужно ли мне сохранять userIDID пользователя в мою базу данных, адрес электронной почты пользователя и/или имя и фамилию? Я спрашиваю об этом, потому что я думаю о том, что пользователи меняют свой адрес электронной почты, которые не могут войти в следующий раз, если это так.

И как я могу узнать, что, когда пользователь входит в систему с Facebook, а в следующий раз с Twitter, например, это тот же пользователь? Возможно, основываясь на его адресе электронной почты? Но я думаю, что если вы его не изменили, ваш стандартный электронный адрес электронной почты - ваш [email protected], правильно?

Я не прошу ввести код здесь, пожалуйста, предоставьте мне опыт или лучшие практики.

Спасибо заранее!

Stijn Hoste

Ответ 1

Для меня лучше всего использовать oauth2 (все социальные службы поддерживаются) и использовать базу данных с двумя таблицами: пользователями и пользователями_социальными.

Когда пользователи пытаются войти в систему через социальную сеть, ваш script будет создавать записи в таблицах и связывать эти таблицы с помощью отношения "один ко многим". Все социальные пользователи возвращают уникальный идентификатор для пользователя auth, а ваш script может вставить его на хранение для дальнейшего использования.

Табличная структура и тестовые данные

Пользователь таблицы

user_id   | email
________________
1         | [email protected]
2         | [email protected] - if the social cannot return an email address

Таблица user_socials

social_id | user_id | social
____________________________
123213213 | 1       | facebook
332123213 | 1       | twitter
323232321 | 2       | vk

Этот шаблон хорош, потому что один пользователь может подключить много социальных сетей к своей учетной записи.

P.s. Facebook, Twitter, Google+ - возвращает адрес электронной почты пользователя