Обмен токенов Disca Oauth2 - PullRequest
       15

Обмен токенов Disca Oauth2

0 голосов
/ 04 октября 2018

Я пытаюсь интегрировать Discord webhooks с моим приложением.

Я получил код авторизации от Discord после проверки пользователя, и теперь я должен обменять его на токен.

Я отправил POSTс: client_id, client_secret, grant_type, code, redirect_uri и scope , следующих за документами .Вместо получения токена я получил 403. Forbidden.

Дело в том, что когда я делаю это через Postman это работает! Это не работает внутри моего приложения Spring Boot, так что, вероятно,Я что-то здесь упускаю.

Я пробовал 2 подхода, первый:

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

HttpEntity entity = new HttpEntity(headers);
    String path = String.format(discordOauthAccessUrl, discordClientId, discordClientSecret, discordGrantType, discordAuthData.getCode(), discordRedirectUri, discordScope);
    System.out.println(path);
    ResponseEntity<Object> object = restTemplate.exchange(
            path,
            HttpMethod.POST,
            entity,
            Object.class);

путь выглядит так:

https://discordapp.com/api/oauth2/token?client_id=%s&client_secret=%s&grant_type=%s&code=%s&redirect_uri=%s&scope=%s

второй:

        MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
    map.add("client_id", discordClientId);
    map.add("client_secret", discordClientSecret);
    map.add("grant_type", discordGrantType);
    map.add("code", discordAuthData.getCode());
    map.add("redirect_uri", discordRedirectUri);
    map.add("scope", discordScope);
    HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);

    ResponseEntity<Object> response = restTemplate.postForEntity(discordOauthAccessUrl, request, Object.class);

там, где поданный запрос выглядит так:

<{client_id=[X], client_secret=[X], grant_type=[authorization_code], code=[X], redirect_uri=[http://X], scope=[webhook]},{Content-Type=[application/x-www-form-urlencoded]}>

Я, вероятно, упускаю что-то глупое, потому что он работает через Почтальон.Любая помощь будет оценена.

...