Ошибка при получении oauth-токена с использованием httpClient - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь получить токен oauth с помощью http-клиента, но это приводит к HTTP / 1.1 401 Несанкционированная ошибка .Первоначально я попытался использовать запрос curl следующим образом, и это был успех.(здесь исходные значения параметров не показаны в целях безопасности)

   curl --request POST --url oauthtokenHttpsurl  --header 'content-type: application/json' --data '{"client_id":"clientId","client_secret":"client_secret","audience":"audienceurl","grant_type":"credentials"}'

Затем я попытался реализовать то же самое в Java, используя apache httpclient, как показано ниже, но это дает 401 Несанкционированную ошибку

   import java.io.IOException;
    import java.nio.charset.StandardCharsets;

    import org.apache.commons.io.IOUtils;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.message.BasicHeader;
    import org.apache.http.protocol.HTTP;


    public class TestOAuthPost {

    public static void main(String[] args) {
        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {

            HttpPost httppost = new HttpPost("oauthtokenHttpsurl");
            JsonObject jsonObj = new JsonObject();
            jsonObj.addProperty("grant_type", "credentials");
            jsonObj.addProperty("audience", "audienceurl");
            jsonObj.addProperty("client_id", "client_id");
            jsonObj.addProperty("client_secret", "client_secret");
            StringEntity se = new StringEntity(jsonObj.toString());
            se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
            httppost.setEntity(se);

            // Execute HTTP Post Request
            HttpResponse response = httpClient.execute(httppost);
            String result = IOUtils.toString(response.getEntity().getContent(), StandardCharsets.UTF_8);
      // 401 Unauthorized error
      } catch (IOException e) {

            System.out.println("erss");

        }
        }
    }

Я впервые работаю с библиотекой httpclient и в oauth.

Может кто-нибудь дать несколько советов.

1 Ответ

0 голосов
/ 04 декабря 2018

Над кодом работает нормально.Это была моя ошибка, извините за беспорядок.Произошла копия незначительной орфографической ошибки в идентификаторе клиента.Во всяком случае, я надеюсь, что это поможет кому-то в будущем

...