Я пытаюсь интегрировать 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]}>
Я, вероятно, упускаю что-то глупое, потому что он работает через Почтальон.Любая помощь будет оценена.