Чириканье с помощью Twitter Gem и Omniauth - PullRequest
2 голосов
/ 04 мая 2011

Я занимаюсь разработкой веб-приложения, которое позволит пользователям твитить посты и ссылки, но я не могу заставить Twitter и Omniauth хорошо играть вместе.В настоящее время я работаю на Rails 3.0.6 и Ruby 1.8.7, с Twitter gem 1.4.1 и Omniauth gem 0.2.5

. Я могу хорошо аутентифицировать пользователей, но когда дело доходит до отправки твитаМне только что сообщили об ошибке:

 POST https://api.twitter.com/1/statuses/update.json: 401: Incorrect signature

Я следовал этому учебнику и поместил свой ключ потребителя и секрет потребителя в блок настройки Twitter в моем инициализаторе Omniauth, но неoauth-токен или oauth-секрет, потому что они обязательно будут использоваться для каждого пользователя.

omniauth.rb

 Twitter.configure do |config|
   config.consumer_key = "XXXXXXXXXXXXXXXXXXXXXX"
   config.consumer_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 end

user.rb

  def twitter
     unless @twitter_user
       provider = self.authentications.find_by_provider('twitter')
       @twitter_user = Twitter::Client.new(:oauth_token => provider.token, :oauth_token_secret => provider.secret) rescue nil
     end
     @twitter_user
  end

Затем я формирую запрос, используя:

 current_user.twitter.update("Hello World!")

И вот что тогда дает мне ошибку 401.

Есть идеи?Спасибо!

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Ваш код user.rb использует неправильный формат. Они довольно сильно изменились. Вам нужно что-то вроде этого сейчас:

require 'twitter'
class TwitterToken < ConsumerToken
  TWITTER_SETTINGS={:site=>"http://api.twitter.com", :request_endpoint => 'http://api.twitter.com',}
  def self.consumer
    @consumer||=OAuth::Consumer.new credentials[:key],credentials[:secret],TWITTER_SETTINGS
  end

  def client
    Twitter.configure do |config|
      config.consumer_key = TwitterToken.consumer.key
      config.consumer_secret = TwitterToken.consumer.secret
      config.oauth_token = token
      config.oauth_token_secret = secret
    end
    @client ||= Twitter::Client.new
  end
end
0 голосов
/ 16 августа 2011

У меня были похожие проблемы с этой версией OmniAuth, я вернулся к версии 0.2.0, и все 401 перестали происходить.

...