gpt4 book ai didi

java - 如何使用路标发送 oauth_body_hash?

转载 作者:行者123 更新时间:2023-12-01 11:58:09 24 4
gpt4 key购买 nike

OAuth Request Body Hash extension OAuth 1.0 指定发送非表单编码请求正文的消费者应在签名基字符串中包含请求正文的 SHA1 哈希作为 oauth_body_hash 参数。 Signpost 没有对此扩展的内置支持,但我要连接的服务需要它。如何将参数添加到我的请求中?

最佳答案

Signpost OAuthConsumer 类提供 setAdditionalParameters 方法。只需计算哈希值并自行添加参数即可。唯一的复杂之处是这些参数没有被 Signpost 进行百分比转义,如 OAuth Parameter Encoding指定,所以你需要自己做。这是一个例子:

MessageDigest md = MessageDigest.getInstance("SHA1");
md.update(requestBody.getBytes());
byte[] output = Base64.encodeBase64(md.digest());
String hash = new String(output);
HttpParameters parameters = new HttpParameters();
parameters.put("oauth_body_hash", URLEncoder.encode(hash, "UTF-8"));

CommonsHttpOAuthConsumer signer = new CommonsHttpOAuthConsumer(key, secret);
HttpPost request = new HttpPost(url);
request.setHeader("Content-Type", "application/xml");
request.setEntity(new StringEntity(requestBody, "UTF-8"));
signer.setAdditionalParameters(parameters);
signer.sign(request);

或者,您可以在签名之前设置请求的 header ,Signpost 会将其 header 与您自己的 header 合并:

request.setHeader("Authorization", "OAuth oauth_body_hash=\""+URLEncoder.encode(hash, "UTF-8")+"\"");

关于java - 如何使用路标发送 oauth_body_hash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28204736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com