Подтвердить что ты не робот

Схема базы данных для нескольких аутентификаций, Facebook Connect, Twitter, OpenID и т.д.

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

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

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

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

4b9b3361

Ответ 1

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

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

Удачи.

Ответ 2

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

Таким образом вы определяете способ входа пользователя в систему и фактическую учетную запись.