2011-02-26 74 views
1

我試圖創建一個基於Ruby的Twitter客戶端,我可以通過命令行使用Ruby後我的狀態。我現在想了解oauth,這讓我有點困惑。如果我正在構建Web應用程序,那麼當請求令牌完成時,我可以提供一個回調URL。我將如何從命令行執行該操作?我不希望紅寶石打印出授權,並複製並粘貼網址,然後點擊'允許'獲取令牌。我發現了一些關於帶外交換或PIN的內容。我將如何使用紅寶石中的OAuth庫做到這一點,非常感謝。Ruby的Twitter客戶端

回答

4

要使用回調URL機制,你的應用程序應該是一個web application。看來你正在開發desktop application,如果是那樣的話,你應該通過提供「OOB」(出帶外)當你請求令牌的oauth_callback_url遵循「PIN碼」流動。像這樣,

https://api.twitter.com/oauth/request_tokenoauth_callback = OOB

如果你正確設置這個HTTP請求的報頭(設置HTTP報頭的OAuth的重要組成部分,我想你已經知道如何做到這一點),微博將給oauth_tokenoauth_token_secretoauth_verifier。我們稱這個標記爲"request_token"。你需要它以後得到"access_token"

一旦你有request_token,你需要用下面的網址

http://api.twitter.com/oauth/authorize?oauth_token=request_token

這將打開授權頁面,讓用戶打開網頁,以決定是否對用戶想讓您的應用程序訪問他或她的Twitter帳戶。如果使用說沒事,然後推特給PIN碼。您需要允許用戶輸入PIN碼以便保存。

現在,是時候通過使用您的comsumer_key/secret,request_tokenPIN code來獲得另一個令牌("access_token")。你應該正確設置標題與所有這些值,並用這個網址再做一次HTTP請求,

https://api.twitter.com/oauth/access_token

如果Twitter接受你的「的access_token」請求時,它會給你oauth_tokenoauth_token_secretuser_idscreen_name。我們稱這個令牌爲"access_token"。現在,您可以通過使用access_tokenits secret (oauth_token_secret)執行所需的Twitter的API任何的OAuth。您可以將這兩個值保存在文件中,並在需要訪問用戶的Twitter帳戶時繼續使用它們。在用戶撤銷對應用程序的訪問權限之前,這些值將始終有效。

我不知道Ruby,但如果你知道如何在Ruby的自定義標題進行HTTP/HTTPS請求(GET/POST),如果你仔細按照Twitter的API文檔這個PIN碼流應該可以正常工作。祝你好運!

+0

我只想說明一點,如果你想創建一個單獨使用的twitter客戶端或者只是一個單用戶應用程序,你可以使用My Access Token,它已經從http://dev.twitter .COM /應用程序。所以,我不必擔心OAuth。 – toy 2011-02-27 22:23:18

1

它會要求輸入PIN碼,直到你得到的請求令牌時指定oauth_callback,轉發用戶授權URL

@consumer =的OAuth :: Consumer.new( TWITTER_CONSUMER_KEY 不能當, TWITTER_CONSUMER_SECRET, {:站點=> 「https://api.twitter.com」})

@request_token = @ consumer.get_request_token(:oauth_callback => CALLBACK_URL

這是衝浪幾個小時的不完整文檔的結果。