2016-05-26 81 views
3

我正在将我的web应用与AppDirect, 进行集成,为此我使用jersey创建了一个java rs API。使用路标对HTTP消息进行签名时获取401

当我订阅一个事件时,我得到一个包含oauth值(密钥和秘密)的地图来签名我的请求和一个事件url,我向其发出一个标志提取。

我正在按预期得到这些值(oauth和eventurl)。

现在,当我试图发出一个签名提取使用库signpost,我使用下面的代码:

OAuthConsumer consumer = new DefaultOAuthConsumer(consumer_key, secret); 
// create an HTTP request to a protected resource 
URL url = new URL(eventUrl); 
HttpURLConnection request = (HttpURLConnection) url.openConnection(); 

// sign the request 
consumer.sign(request); 

// send the request 
request.connect(); 

我收到此错误信息:

getResponseMessage: Unauthorized 
getresponsecode: 401 

我也试图与以下测试值:

  1. url =“https://www.appdirect.com/api/integration/v1/events/dummyOrder”;
  2. dummyKey =“Dummy”;
  3. dummySecret =“secret”; 但我得到了同样的结果。

请问我该如何解决?

我也试过和添加此:

request.setRequestMethod("GET");   

request.setRequestProperty("Authorization", "OAuth"); 

request.setRequestProperty("Host", "..."); 

request.setRequestProperty("Content-Type", "application/xml");   

request.setRequestProperty("oauth_nonce", oauth_nonce); 

request.setRequestProperty("oauth_signature", oauth_signature); 

request.setRequestProperty("oauth_signature_method", oauth_signature_method); 

request.setRequestProperty("oauth_timestamp", oauth_timestamp); 

request.setRequestProperty("oauth_version", oauth_version); 

在授权物业

回答

2

Dummy keys (oauth)

No-auth

这里也试图与key:secret这个服务通过测试时行为Postman Chrome扩展程序。 如果您使用的是OAuth提供程序,那么您需要为AppDirect获得有效的API密钥并保密。

顺便说一句,第二个屏幕截图显示你不需要发送OAuth令牌到appdirect到https://www.appdirect.com/api/integration/v1/events/dummyOrder,因为它授权任何url。

因此,根据您的笔记,您必须添加适当的(秘密和密钥),然后AppDirect OAuth服务器将返回一个有效令牌,您将在寻址AppDirect存储库时使用该令牌。或者您可以发送每个请求的密钥。

+0

是的,我已经使用OAuthConsumer consumer = new DefaultOAuthConsumer(consumer_key,secret);我会添加一些代码 – eeadev

+0

检查,我更新了一点。 – cingulata

+0

我有一个有效的消费者密钥和秘密,我将它传递给我的DefaultOAuthConsumer对象。我应该在哪里使用它? – eeadev