Схема базы данных для нескольких аутентификаций, Facebook Connect, Twitter, OpenID и т. Д. - PullRequest
19 голосов
/ 29 сентября 2010

Я создаю приложение, которое хочу связать с Facebook Connect, Twitter, OpenID и, возможно, другими социальными сетями.Пользователи смогут войти в систему, используя любое количество этих методов одновременно.Мое приложение использует MySQL в качестве внутренней базы данных.

Может ли кто-нибудь дать мне руководство о том, как должна выглядеть моя схема БД для одновременного сбора информации о пользователях из различных социальных сетей?У меня есть идея (основанная на моем чтении в Интернете):

Пользователь {userid, ...}
UserFacebook {fbid, userid, ...}
UserTwitter (twid, userid, ...}
и т. Д. И т. П.

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

Ответы [ 2 ]

8 голосов
/ 22 декабря 2011

Я предлагаю вам использовать вашу пользовательскую схему в двух таблицах: пользователи и удостоверения. Идентификационные данные должны иметь: Id, User Id, Adapter, Hash.

Для адаптера аутентификации имени пользователя / пароля хэш будет хэшированным (например, MD5 / SHA1) паролем, а другие адаптеры (Facebook, Twitter и т. Д.) Будут токенами, предоставленными провайдером аутентификации.

Удачи.

0 голосов
/ 03 октября 2010

Это то, что я делаю, я отделяю таблицу учетных записей от процесса аутентификации, например, учетная запись содержит имя учетной записи, дату регистрации и, возможно, уникальный идентификатор.Затем я могу создать 4 дополнительные таблицы, например: users_openid, users_facebook, users_twitter и users (для вашего обычного имени пользователя / аутентификации на сайте), у всех есть внешний ключ (account_id), который ссылается на таблицу аккаунтов.Вы разделяете способ входа пользователя в вашу систему и действительную учетную запись.

...