【发布时间】:2011-07-11 18:19:55
【问题描述】:
使用 ruby OAuth 库,我正在尝试验证以前用户的凭据是否仍然有效。 (如果他撤销了我的应用程序的权限)我已经为 Twitter 完成了它,没有问题,因为有一个方便的 .authenticated? Twitter OAuth 库中的方法。但是使用通用库,我找不到类似的方法。
@consumer = OAuth::Consumer.new(
ENV['TUMBLR_CONSUMER_KEY'],
ENV['TUMBLR_CONSUMER_SECRET'],
{ :site => 'http://www.tumblr.com',
:request_token_path => '/oauth/request_token',
:authorize_path => '/oauth/authorize',
:access_token_path => '/oauth/access_token',
:http_method => :get
}
)
@access_token = OAuth::AccessToken.new(@consumer, @tumblrauth['access_token'], @tumblrauth['access_token_secret'])
puts @access_token.inspect
@resp = @access_token.get('api/read')
puts @resp.inspect
我一尝试@access_token.get() 调用就得到一个服务器错误,关于 nill 没有小写方法,我猜它期待的是某种类型的字符串。但我不知道它指的是什么参数。
我使用的 access_token 和 secret 以前可以正常工作,但我撤销了对应用程序的访问权限以测试如何检测它。我只是需要一些方法来知道用户不再注册该服务,所以我可以切换状态。
这是一个堆栈跟踪:
NoMethodError - undefined method 'downcase' for nil:NilClass:
/Library/Ruby/Gems/1.8/gems/oauth-0.4.4/lib/oauth/request_proxy/base.rb:93:in 'normalized_uri'
/Library/Ruby/Gems/1.8/gems/oauth-0.4.4/lib/oauth/request_proxy/base.rb:113:in 'signature_base_string'
/Library/Ruby/Gems/1.8/gems/oauth-0.4.4/lib/oauth/signature/base.rb:77:in 'signature_base_string'
【问题讨论】: