使用Twitter gem和Omniauth进行推特

时间:2011-05-04 14:22:53

标签: ruby-on-rails-3 twitter omniauth

我正在开发一个网络应用程序,可以让用户发布帖子和链接,但我似乎无法让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

我跟着this tutorial,并将我的消费者密钥和消费者密钥放在我的Omniauth初始化程序中的Twitter配置块中,但不是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 个答案:

答案 0 :(得分:1)

您的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

答案 1 :(得分:0)

我遇到类似OmniAuth版本的问题,我回到0.2.0版本,所有401版本都停止了。