使用路标签署 HTTP 消息时获取 401

Getting 401 when signing HTTP message with signpost

我正在将我的网络应用程序与 AppDirect 集成, 为此,我使用 jersey.

创建了一个 java rs API

当我订阅一个事件时,我得到一个映射,其中包含用于签署我的请求的 oauth 值(密钥和秘密)和一个事件 url 我向其发出签名提取。

我正在按预期获得这​​些值(oauth 和事件url)。

现在,当我尝试使用库 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. 虚拟秘密 = "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);

也在授权中尝试使用 key:secret属性

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

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

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