2010-08-24 69 views
0

x我一直在努力工作數天以獲得Twitter認證與Ruby,但我沒有任何運氣。與Ruby的OAuth錯誤401的Twitter錯誤

我第一次嘗試這樣的:

class TwitterController < ApplicationController 

    def index 
    @callback_url = "http://dev.twipler.com:3000/twitter/auth" 
    @auth= TwitterOAuth::Client.new(:consumer_key => "xxx", :consumer_secret => "xxxxxxxxxxxxxxxxx") 
    @rtoken = @auth.request_token :oauth_callback => @callback_url 
    @token = @rtoken.token 
    @secret = @rtoken.secret 
    @link = @rtoken.authorize_url 
    session['token' ] = @token 
    session['secret'] = @secret 
    redirect_to @link 
    end 

    def auth 
    @auth.authorize_from_request(session[:rtoken], session[:rsecret], params[:oauth_verifier]) 
    end 
end 

而且非常相似的方式但與Twitter的寶石,並直接與OAuth的寶石一樣。無論OAuth :: Consumer :: token_request是否因401錯誤而死亡。

所以,出於絕望,我試圖與git克隆Snitter,加我的Twitter creds,並嘗試它,但它也有401

我嘗試使用本地主機死:300 /嘰嘰喳喳/ AUTH, http://dev.twipler.com:3000/twitter/auth,以及每個前者的bit.ly。沒有任何作用。

任何幫助?

編輯:當然,我會忘記做最合乎邏輯的事情,並刪除我的祕密。 (他們已經改變了;))。

回答

2

您可能想編輯您的消費者祕密。有了這個,任何人都可以代表您的應用發出請求。

也就是說,請確保您的系統時間已同步到ntp服務器。如果您的系統時間快或慢,OAuth請求將失敗,因爲它們包含時間戳和相對較短的TTL。我有這個exact problem回來。

如果做不到這一點,就可以破解打開OAuth的寶石,並開啓HTTP調試,它會告訴你完整的HTTP事務,包括返回的錯誤信息。

+0

我檢查了我的時間,當我發現這可能是一個問題,但沒關係。但是我可以通過HTTP調試,謝謝! – 2010-08-24 01:30:59

+0

看看Net :: HTTP#set_debug_output。在OAuth gem中查找HTTP設置完成的位置,然後在HTTP對象set_debug_output($ stderr)中查找。完整的HTTP事務將顯示在您的Web服務器錯誤日誌中(在我的情況下,Apache爲/ var/log/http/error_log)。 – 2010-08-24 02:15:18

+0

真棒,謝謝你! – 2010-08-24 23:08:37