Ruby on rails 3 使用Twitter gem和Omniauth发布tweet

Ruby on rails 3 使用Twitter gem和Omniauth发布tweet,ruby-on-rails-3,twitter,omniauth,Ruby On Rails 3,Twitter,Omniauth,我正在开发一个web应用程序,它可以让用户在推特上发布帖子和链接,但我似乎无法让Twitter和Omniauth很好地结合在一起。我目前运行的是Rails 3.0.6和Ruby 1.8.7,Twitter gem 1.4.1和Omniauth gem 0.2.5 我可以很好地对用户进行身份验证,但在发送tweet时,我只得到了一个错误: POST https://api.twitter.com/1/statuses/update.json: 401: Incorrect signature

我正在开发一个web应用程序,它可以让用户在推特上发布帖子和链接,但我似乎无法让Twitter和Omniauth很好地结合在一起。我目前运行的是Rails 3.0.6和Ruby 1.8.7,Twitter gem 1.4.1和Omniauth gem 0.2.5

我可以很好地对用户进行身份验证,但在发送tweet时,我只得到了一个错误:

 POST https://api.twitter.com/1/statuses/update.json: 401: Incorrect signature
我遵循了,并将我的使用者密钥和使用者机密放在Omniauth初始值设定项的Twitter配置块中,但没有oauth令牌或oauth机密,因为它们肯定会按每个用户使用

omniauth.rb

user.rb

然后,我使用以下方式形成请求:

 current_user.twitter.update("Hello World!")
这就是401错误的原因


有什么想法吗?谢谢

您的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
require'twitter'
类TwitterToken”http://api.twitter.com“,:请求_端点=>”http://api.twitter.com',}
自我消费者
@消费者| |=OAuth::consumer.new凭证[:key]、凭证[:secret]、TWITTER设置
结束
def客户端
Twitter.configure do | config|
config.consumer\u key=TwitterToken.consumer.key
config.consumer\u secret=TwitterToken.consumer.secret
config.oauth_token=token
config.oauth_token_secret=secret
结束
@client | |=Twitter::client.new
结束
结束

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

 current_user.twitter.update("Hello World!")
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