3

我正在将我的 web 应用程序与AppDirect集成,为此我使用 jersey 创建了一个 java rs API。

当我订阅一个事件时,我会得到一个包含 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 = "假人";
  3. dummySecret = "秘密"; 但我得到了同样的结果。

请问我该如何解决?

我也尝试并添加了这个:

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);

key:secret也在Authorization 属性中尝试过

4

1 回答 1

2

虚拟密钥(oauth)

无身份验证

这是通过 Postman Chrome 扩展程序进行测试时此服务的行为。如果您使用的是 OAuth 提供程序,那么您需要为 AppDirect 和秘密获取有效的 api-key。

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

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

于 2016-05-31T07:21:24.960 回答