对Oauth两足系统进行身份验证



我正在尝试使用2legged oauth对web服务进行身份验证。我有下一个工作的java示例,使用路标库创建经过身份验证的URL:

 String consumerKey = "KEY";
 String consumerSecret = "SECRET";
 DefaultOAuthConsumer consumer = new DefaultOAuthConsumer(consumerKey, consumerSecret);
 consumer.setTokenWithSecret(consumerKey, consumerSecret);
 return consumer.sign(targetUrl);

生成这样的URL

http://example.com/my/method?oauth_consumer_key=KEY& oauth_nonce = 4779611081457530684, oauth_signature = v19lL74VVMTibCMja5vnwIE2q5g % 3 d& oauth_signature_method = HMAC-SHA1& oauth_timestamp = 1368778106, oauth_token = KEY& oauth_version = 1.0

我正在尝试使用ruby的oauth重新创建它。我的代码现在看起来像这样:

consumer = OAuth::Consumer.new(@creds[:key], @creds[:secret],
                               :site => "URL",
                               :scheme => :query_string)
token = OAuth::AccessToken.new(consumer)
token.get "METHOD"

生成如下url:

http://example.com/my/method?oauth_signature_method=HMAC-SHA1& oauth_nonce = 7 eqe4cae27ube9bftfx7pcjj1kqfuxhpwt5d3nzw0& oauth_version = 1.0, oauth_consumer_key = KEY& oauth_timestamp = 1368778250, oauth_signature = EbM0BjslzB5yXYWeC8EJGAEGi1k % 3 d

但我总是得到一个未经授权的错误,即使我手动设置oauth_token为key(如路标)。看起来nonce是无效的,但它们都是有效的库来验证

有人能帮我吗?

Thanks in advance

我也遇到过同样的问题,我用:

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分钟内。

希望有帮助;)

相关内容

  • 没有找到相关文章

最新更新