Twitter oauth2 使用 javax.ws.rs

Jon*_*nes 5 java twitter oauth

我有这个使用 javax.ws.rs 的 twitter 请求

    WebTarget target = new WebTargetBuilder(client, OAUTH_API_ENDPOINT).build();

    Builder request = target
            .request(MediaType.APPLICATION_JSON)
            .header("Authorization", "Basic " + encodedCredentials)
            .header("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    Response postResponse = request
            .post(Entity.entity("grant_type=client_credentials", MediaType.TEXT_PLAIN));

    System.out.println(postResponse.readEntity(String.class));
Run Code Online (Sandbox Code Playgroud)

encodingCredentials 是我的消费者秘密和以 base 64 编码的消费者密钥。

我试图做的请求是:

POST /oauth2/token HTTP/1.1
Host: api.twitter.com
User-Agent: My Twitter App v1.0.23
Authorization: Basic eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJn
                 NmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==Content-Type: application/x-www-   form-urlencoded;charset=UTF-8
Content-Length: 29
Accept-Encoding: gzip

grant_type=client_credentials
Run Code Online (Sandbox Code Playgroud)

我不断收到 403 Forbidden: {"errors":[{"code":170,"message":"Missing required parameter: grant_type","label":"forbidden_​​missing_parameter"}]}

好像帖子正文设置不正确,有人知道如何设置吗?

FrA*_*rAn 1

您可以尝试更改 POST 请求正文/实体的内容类型,如下所示:

 .post(Entity.entity("grant_type=client_credentials",  MediaType.APPLICATION_FORM_URLENCODED)
Run Code Online (Sandbox Code Playgroud)