моделирование пользователей с Oauth 2 - PullRequest
7 голосов
/ 01 марта 2011

Я создаю веб-приложение с использованием rails 3. У меня есть собственная регистрация пользователей, вход в систему и аутентификация, и я надеюсь добавить реализацию Oauth 2, чтобы люди могли подключаться к Facebook и входить в систему / регистрироваться с меньшими затратами.

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

Теперь я размышляю над тем, как интегрировать это в мою существующую модель пользователя, которая в основном состоит из таблицыПользователи, у которых есть электронные адреса, имена и пароли.

Должен ли я оставить свою таблицу пользователей такой, какая она есть, и настроить таблицу провайдеров доступа:

id | user_id | provider_id | access_key
---------------------------------------
1  |    4    |     1       |   xyz
2  |    4    |     2       |   pqr
3  |    7    |     1       |   dfr

и, скажем, «Информация Facebook пользователей»таблица, где я храню информацию о пользователе, который был получен от доступа к этому пользователю на графике facebook?

Таким образом, я могу сохранить таблицу Users нормализованной с основной информацией, которая есть у каждого пользователя независимо от того, подключены ли они черезFacebook или нет (имя, адрес электронной почты, пароль) и дополнить эти данные данными из их профиля в Facebook, если они станут доступны?

Есть ли лучший способ сделать это?Есть ли хорошее руководство или учебное пособие для разработки этого типа модели базы данных (например, Quora)?Кстати, я могу справиться с учебником по PHP!

Извините за открытый вопрос.

1 Ответ

6 голосов
/ 02 марта 2011

Возможно, вы захотите использовать Signet или OmniAuth для своего клиента OAuth, если вы пытаетесь использовать как Twitter, так и Facebook.Я склонен к Signet, так как я написал это, но OmniAuth может быть лучшим выбором на данный момент, так как это было немного дольше, в зависимости от того, что вы пытаетесь сделать.

Что касается моделирования данных,у тебя правильная идея.Вы вероятно должны сделать это немного более общим все же.Вместо access_key вам, вероятно, понадобится access_token и, возможно, refresh_token для OAuth 2. Между тем, OAuth 1 использует пару ключ / секретный ключ.Так что может быть что-то вроде этого (без первичных и внешних ключей):

auth_scheme | access_token | refresh_token | key | secret | username | password
-------------------------------------------------------------------------------
oauth_1     |              |               | 123 | 456    |          |
oauth_2     | 123          |               |     |        |          |
oauth_2     | 123          | abcd          |     |        |          |
xauth       |              |               |     |        | abcd     | 12345
clientlogin |              |               |     |        | abcd     | 12345
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...