我正在使用OAuth-Ruby對Tumblr應用程序進行OAuth身份驗證。我能夠編寫通過OAuth的各個步驟前進的代碼,但我無法獲取訪問令牌或實際發出請求。我可以獲取請求密鑰,將用戶重定向到Tumblr以進行身份驗證並授予訪問權限,並接收經過身份驗證的請求密鑰。但我無法獲得更遠的進展。使用OAuth-Ruby和Tumblr API獲取訪問令牌(Rails 3)
我已經註冊了我的Tumblr應用程序;讓我們假設這個問題,它爲我提供了以下項:
- OAuth用戶密鑰:@oauth_consumer_key
- 的密鑰:@secret_key
(我有實際價值,但我)
我在用戶提交表單時在運行的控制器中運行以下代碼,該表單在@tumblog變量中存儲信息:
#0. provided when registering application
@key = @oauth_consumer_key
@secret = @secret_key
@site = 'http://www.tumblr.com'
@consumer = OAuth::Consumer.new(@key, @secret,
{ :site => @site,
:request_token_path => '/oauth/request_token',
:authorize_path => '/oauth/authorize',
:access_token_path => '/oauth/access_token',
:http_method => :post })
if @consumer
#1. get a request token
@request_token = @consumer.get_request_token;
session[:request_token] = @request_token
session[:tumblog] = @tumblog
#2. have the user authorize
redirect_to @request_token.authorize_url
else
flash[:error] = "Failed to acquire request token from Tumblr."
render 'new'
end
此代碼讓我訪問Tumblr的正確頁面,在此用戶授予或拒絕我的應用程序訪問用戶帳戶。假設用戶授予訪問權限,Tumblr將重定向回我的應用程序,到我在Tumblr註冊應用程序時提供的回調。到那時,一切都很好。
我的OAuth回調運行在控制器以下代碼:
if params[:oauth_token] && params[:oauth_verifier]
@tumblog = session[:tumblog]
@request_token = session[:request_token]
#3. get an access token
@access_token = @request_token.get_access_token
. . . .
end
在步驟3中,有一個問題。我似乎無法真正與線得到一個訪問令牌:
@access_token = @request_token.get_access_token
誰能告訴我什麼,我需要做的就是訪問令牌?當我運行該行時,出現OAuth :: Unauthorized錯誤。
我真的很感謝任何建議。我一直在谷歌搜索和多天嘗試不同的事情。謝謝!
當然,現在我已經想通了。爲了讓其他可能會遇到類似問題的人受益,問題在於Tumblr OAuth實現期望將oauth_verifier密鑰傳遞給您提供的OAuth回調。因此,代碼@access_token = @ request_token.get_access_token需要更改爲@access_token = @ request_token.get_access_token({:oauth_verifier => params [:oauth_verifier]})。 – 2011-01-12 21:43:24
哇,這幫了我很多。 Tumblr應該在他們的API頁面上提及這一點,因爲我浪費了好幾個小時試圖弄清楚這個確切的問題。 – dreadpirateryan 2011-08-09 03:30:24