Java中的RestAssurance OAuth1身份验证问题(Twitter v2 API)

agxfikkp  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(159)

我试图用Python中的OAuth1身份验证方法向Tweeter发出请求我设法用requests库来完成,但在Java上我使用放心。下面的代码不起作用,它返回未经授权:

Response response = given()
            .headers(headerEmpty())
            .auth()
            .oauth(twitterSettings.getApiKey(), twitterSettings.getApiKeySecret(),
                    twitterSettings.getAccessToken(), twitterSettings.getAccessTokenSecret())
            .spec(baseUrl)
            .get("users/me")
            .then()
            .extract().response();

我上网看了看,我发现我可能需要使用Scribejava库,但不确定如何与休息相合并,确保我不懒惰,但一些帮助。
编辑:我添加了Scribe的依赖项,但仍然不起作用。

public static Headers headerEmpty() {
        Header contentType = new Header("Content-Type", "application/json");
        Header acceptType = new Header("Accept", "*/*");

        List<Header> headerList = new ArrayList<>();
        headerList.add(contentType);
        headerList.add(acceptType);

        return new Headers(headerList);
    }
vxf3dgd4

vxf3dgd41#

我认为问题是因为缺少标头。请尝试将此标头添加到上面的请求中:

Content-Type: application/x-www-form-urlencoded

为了准确地看到你传递的头文件,你可以像这样修改你的代码:

Response response = given()
            .log().all()
            .header("Content-Type", "application/x-www-form-urlencoded")
            .auth()
            .oauth(twitterSettings.getApiKey(), twitterSettings.getApiKeySecret(),
                    twitterSettings.getAccessToken(), twitterSettings.getAccessTokenSecret())
            .spec(baseUrl)
            .get("users/me")
            .then()
            .extract().response();

相关问题