OAuth (Facebook, Twitter) и базовый логин - таблица пользователей - PullRequest
13 голосов
/ 04 сентября 2011

Я хочу разрешить пользователям входить на мой сайт, используя свою учетную запись Facebook или Twitter, но если у них их нет, зарегистрируйте новую учетную запись и используйте базовую учетную запись моего сайта.

Но как должна выглядеть моя таблица пользователей :

Моя идея:

  • id (основной, автоинкремент)
  • имя пользователя (в случае oauth login => ouath_provider + oauth_id, например: fb_100001557958700)
  • пароль (пароль выбирается пользователем или генерируется случайным образом в случае oauth)
  • имя (имя для отображения)

Что вы думаете? Или я должен иметь 2 таблицы, 1 для основного входа в систему и еще 1 для oauth входа? Но тогда как у пользователей будут уникальные идентификаторы?

Заранее спасибо за комментарии.

Ответы [ 2 ]

20 голосов
/ 04 сентября 2011

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

авторизации:

network     - Varchar(255)  #Twitter/Facebook/Openid/whatever
network_id  - varchar(255)  #Users id for that social network.
user_id     - int

пользователи:

id (primary, auto increment)
name
password
username

С этой структурой, если вы хотите, чтобы один и тот же пользователь мог войти в систему одновременно с Twitter и Facebook в какой-то момент в будущем, это также возможно.

2 голосов
/ 04 сентября 2011

Вот так выглядит моя пользовательская таблица.

  • User_id (основной, автоинкремент)
  • oauth_provider (enum (none, twitter, facebook)) *
  • oauth_uid
  • имя пользователя
  • пароль
  • и т. д.

Каждый раз, когда пользователь регистрируется через Facebook / Twitter, новая запись вставляется вместе сзапись пароля как ноль конечно.

Я думаю, что это хороший способ сделать это, потому что у вас есть 1 уникальный user_id, который вы можете использовать в своем приложении / базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...