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

标签 java oauth httpurlconnection signpost appdirect

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

当我订阅一个事件时,我会得到一个映射,其中包含用于签署我的请求的 oauth 值( key 和 secret )和一个我向其发出签名提取的事件 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 = " 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);

还尝试在 Authorization 属性中使用 key:secret

最佳答案

Dummy keys (oauth)

No-auth

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

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

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

关于java - 使用路标签署 HTTP 消息时获取 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37457427/

相关文章:

java - 上传时 EPIPE(破管)?

java - HttpURLConnection 响应不工作

java - 使用 REST 执行 POST 请求 - 如何使用 Neo4j 执行此操作

java - Intellij代码格式化,保持/*package*/在同一行

java - W/System.err : java.net.SocketException:套接字已关闭

java - XSL-FO 主体溢出页脚

.Net Twitter OAuth 如何执行成功的 GET 请求

node.js - crypto.getCurves 未定义

java - 如果我想从遗留代码中删除 catch(Throwable t) 子句,我应该注意什么?

authentication - 如何将社交登录集成到我现有的用户架构/登录系统?