我正在尝试使用2legged oauth对Web服务进行身份验证。我有下一个使用signpost库创建经过身份验证的URL的java示例:
String consumerKey = "KEY";
String consumerSecret = "SECRET";
DefaultOAuthConsumer consumer = new DefaultOAuthConsumer(consumerKey, consumerSecret);
consumer.setTokenWithSecret(consumerKey, consumerSecret);
return consumer.sign(targetUrl);
这会生成这样的网址
我正在尝试使用ruby的oauth重新创建它。我的代码现在看起来像这样:
consumer = OAuth::Consumer.new(@creds[:key], @creds[:secret],
:site => "URL",
:scheme => :query_string)
token = OAuth::AccessToken.new(consumer)
token.get "METHOD"
并生成如下的URL:
但是我总是收到一个未经授权的错误,即使我手动将oauth_token设置为key(如路标一样)。看起来nonce是无效的,但它们都是oauth的有效库
任何人都可以帮助我吗?
提前致谢
答案 0 :(得分:3)
我和两条腿的oauth一样问题,我修复了:
consumer = OAuth::Consumer.new(key, secret, { :site => 'http://api.mysite.com' })
access_token = OAuth::AccessToken.from_hash(consumer, :oauth_token => key, :oauth_token_secret => secret)
常见问题来自不同步时间戳
您的请求必须与服务器系统时钟同步,例如在linkedin中必须在系统时钟的5分钟内。
希望它有所帮助;)