Помощники из твиттера-входа в модель пользователя - PullRequest
2 голосов
/ 17 мая 2011

Я использую twitter-login в моем приложении на Rails. Это приложение Rack, которое монтируется в rout.rb.

Он предоставляет вспомогательный метод с именем twitter_client, который является экземпляром OAuth :: AccessToken. С OAuth :: AccessToken я могу совершать звонки в API Twitter:

twitter_client.post('/statuses/update.xml', {'status' => 'test test test', 'Accept' => 'application/xml'})

Я пытаюсь связать это с методом в моей User модели, но сталкиваюсь с ошибкой, поскольку сеанс недоступен внутри класса модели.

Какой хороший способ обернуть OAuth::AccessToken#post в User#tweet_something?

1 Ответ

3 голосов
/ 17 мая 2011

Все, что вам нужно для взаимодействия с твиттером, - это токен доступа.

Самый простой способ - добавить два столбца в таблицу пользователей: access_token_key и access_token_secret и обновить их при входе пользователя в систему через Twitter (в before_filter). Токен доступа сохраняется через твиттер-логин в сессии: https://github.com/mislav/twitter-login/blob/master/lib/twitter/login.rb#L141

Если у вас есть токен доступа в пользовательской модели, то вы можете OAuth :: Consumer и OAuth :: AccessToken так же, как это делает твиттер-логин, но без необходимости сеанса: https://github.com/mislav/twitter-login/blob/master/lib/twitter/login.rb#L49.

Таким образом, вы можете взаимодействовать с Twitter от имени своего пользователя, не только отказываясь от контроллеров, но и от фоновых заданий, граблей и прочего.

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