从Scribe中的请求标头中删除oauth_token

Dav*_*tle 3 java oauth scribe two-legged

我们正在尝试与另一家公司的自定义API建立联系,该API使用两条腿OAuth来验证请求并向我们发送回复.

目前我们的代码是发送一个请求,但它没有在另一端进行身份验证,因此发送了一个UNAUTHORIZED响应.

到目前为止我们调查的步骤:

  • 使用相同的凭据在python中使用OAuth实现连接到远程站点.
  • 要求另一家公司将我们的OAuth请求与另一家公司进行比较,以便成功查看我们的OAuth请求是否缺失.

在上面的第二点之后,我们的请求和另一个工作请求之间的唯一区别是该oauth_token参数存在于我们的请求中而不存在于其他请求中.此外,他说,他们有一个oauth_body_hash_value大多数他们的要求,但是这并不存在于我们的-虽然他们没有得到它的工作要求.

有没有办法删除oauth_tokenScribe 中的参数?或者,oauth_body_hash_value总是需要吗?请求可以不用吗?

我已经包含了下面的代码,我对OAuth来说是全新的,所以请随时告诉我是否还有其他问题.

请注意,TestAPI.class扩展了DefaultAPI10a,只返回所有三个必需方法的"".

public class TestImporter {

  private static final String REQ_URL   = "http://test.com/";

  private static final String KEY         = "KEY";
  private static final String SECRET      = "SECRET";

  // test variables
  private static final String VAR1        = "Test123";

  public static void main(String[] args) {

    OAuthService service = new ServiceBuilder()
                               .provider(TestAPI.class)
                               .apiKey(KEY)
                               .apiSecret(SECRET)
                               .build();
    Token token = new Token("", "");
    OAuthRequest request = new OAuthRequest(Verb.GET, REQ_URL + VAR1 + "/");
    service.signRequest(token, request);
    Response response = request.send();
    System.out.println(response.getBody());

  }

}
Run Code Online (Sandbox Code Playgroud)

Pab*_*dez 5

关于你自己的答案似乎你想要做的是将签名放在查询字符串中而不使用Authorization标头.

这虽然有效但不推荐.无论如何,如果你真的需要这样做,有一种方法OAuthService可以在查询字符串中创建"签名":

ServiceBuilder()
  .provider(TestAPI.class)
  .apiKey(KEY)
  .apiSecret(SECRET)
  .signatureType(SignatureType.QueryString)
  .build();
Run Code Online (Sandbox Code Playgroud)