我正在开发一个网络应用程序,可以让用户发布帖子和链接,但我似乎无法让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错误。
有什么想法吗?谢谢!
答案 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版本都停止了。