2011-05-04 91 views
2

我正在開發一個網絡應用程序,可以讓用戶發帖和鏈接,但我似乎無法讓Twitter和Omniauth一起玩。我目前在Rails 3.0.6和Ruby 1.8.7上運行,使用Twitter gem 1.4.1和Omniauth gem 0.2.5使用推特寶石和Omniauth推文

我可以很好地驗證用戶身份,但是在發送推文時,我「M剛纔的錯誤:

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

我跟着this tutorial,並把我的用戶密鑰和消費者祕密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錯誤。

任何想法?謝謝!

回答

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 
0

我是有該版本OmniAuth類似的問題,我搬回到0.2.0版本,所有401的停止發生。