Какие поля в БД предусмотреть для интеграции с API соц.сервисов?

Приветствую!


Делаю многопользовательскую систему.


Формирую структуру таблицы: profiles, где будут хранится развернутые данные о пользователе.

Думаю в дальнейшем сделать интеграцию с социальными сервисами, что бы некоторые сообщения автоматически публиковались в facebook, twitter. (контактик, одноклассники, мой мир тоже хотелось бы однажды прикрутить).


Как я понял — некий ключ надо будет получить для всего сайта — что-то вроде app-api-key — но я его буду хранить в файле конфигураций проекта — с этим проблем думаю не будет.


А вот что с ключами конкретных пользователей? Нужно ли кроме апи-ключа хранить пароль доступа к учетке пользователя?


Подскажите, пожалуйста, какие поля следует предусмотреть в БД для хранения ключей/паролей для организации взаимодействия?

class CreateProfiles &lt; ActiveRecord::Migration<br/>
 def self.up<br/>
 create_table :profiles do |t|<br/>
 t.integer :user_id<br/>
 # messangers<br/>
 t.string :www, :limit =&gt; 100<br/>
 t.string :icq, :limit =&gt; 100<br/>
 t.string :skype, :limit =&gt; 100<br/>
 t.string :phone, :limit =&gt; 100<br/>
 t.string :address, :limit =&gt; 100<br/>
<br/>
# Social network fields<br/>
 t.string :facebook, :limit =&gt; 50<br/>
 t.string :twitter, :limit =&gt; 50<br/>
<br/>
# Social network API keys<br/>
 t.string :facebook_api_key, :limit =&gt; 150<br/>
 t.string :twitter_api_key, :limit =&gt; 150<br/>
<br/>
# Social network API passwords # НУЖНО ЛИ?<br/>
 t.string :facebook_password, :limit =&gt; 30<br/>
 t.string :twitter_password, :limit =&gt; 30<br/>
 end<br/>
end



Спасибо!
  • Вопрос задан
  • 3003 просмотра
Пригласить эксперта
Ответы на вопрос 3
GearHead
@GearHead
Fullstack разработчик и предприниматель
как я понял, вы пишете на rails, поэтому посмотрите на OmniAuth.
Во-первых, я бы вам посоветовал сделать модель аккаунтов в соц.сетях отдельно от профиля пользователя. К примеру, если пользователь ведёт два твиттера.
Во-вторых, на первое время, если вы делаете только авторизацию, вам понадобится только t.string :adapter и t.string :s_id, где adapter — это к примеру «facebook» или «twitter», а sid — это (кажется) восьмибайтное число, однако которое лучше хранить в строке, если вы к примеру потом будете не только через OAuth интегрироваться.
Дальше уже вам могут понадобиться разные поля для имени-фамилии, пола, возраста к примеру. У всех соц.сетей они разные, и надо смотреть в доках каждой, что из них вам надо, а что нет.
Поле пароля вам не нужно. Авторизация в соц. сетях сейчас делается через OAuth и строки-токены, поэтому максимум, что вам понадобится — это поле под token, если вы хотите offline-доступ (т.е. делать какие-то действия с аккаунтом юзера в соц.сети, когда он не на сайте). Подробнее советую посмотреть доки к OmniAuth.
Ответ написан
zayko
@zayko Автор вопроса
Во-первых, я бы вам посоветовал сделать модель аккаунтов в соц.сетях отдельно от профиля пользователя. К примеру, если пользователь ведёт два твиттера.

Хорошая идея. Возьму на заметку. Однако такой подход тянет за собой кучу проблем — как например выбрать в какой твиттер публиковать? Проблема переходит еще и в область интерфейсов. А это уже для меня не приятно. Все же наверное, оставлю по одной учетке в каждой сети — руководствуясь принципом простоты.
Ответ написан
zayko
@zayko Автор вопроса
Поле пароля вам не нужно… максимум, что вам понадобится — это поле под token ну вот и прекрасно.

оставлю пока только это

# Social network API keys
t.string :facebook_api_key, :limit => 150
t.string :twitter_api_key, :limit => 150


а если вскроются другие потребности — допилю по мере поступления проблем.

Спасибо за подробный ответ.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы