我正在使用 OAuth-Ruby 对 Tumblr 应用程序进行 OAuth 身份验证。我能够编写通过 OAuth 的各个步骤进行的代码,但我无法获得访问令牌或实际发出请求。我可以获得请求密钥,将用户重定向到 Tumblr 以进行身份验证和授予访问权限,并接收经过身份验证的请求密钥。但我不能走得更远。
我已经注册了我的 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 错误。
我真的很感激任何建议。几天来,我一直在谷歌搜索并尝试不同的事情。谢谢!