我正在开发一个网络应用程序,可以让用户发布帖子和链接,但我似乎不能让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
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错误的原因。
任何想法?谢谢!
用户。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
我在那个版本的OmniAuth中遇到了类似的问题,我回到了0.2.0版本,所有的401都停止了发生。