Учетные данные клиента передаются в Spotify API с помощью Spring boot

#java #spring #spring-boot #api #spotify

Вопрос:

Я младший, только начинаю и пытаюсь освоить Spring boot. Кажется, я не могу правильно выполнить свой HTTP-запрос на Spotify. Я хочу отправить СООБЩЕНИЕ с заданными параметрами в API Spotify через клиентские кредитные потоки.

Сейчас у меня это работает, но сейчас не весна:

 public static String sendAuthRequest() throws IOException, OAuthProblemException, OAuthSystemException {

    String client_id = "MY_ID";
    String client_secret = "MY_Secret";

    OAuthClientRequest clientReqAccessToken = OAuthClientRequest
            .tokenLocation("https://accounts.spotify.com/api/token")
            .setGrantType(GrantType.CLIENT_CREDENTIALS).setClientId(client_id).setClientSecret(client_secret)
            .buildBodyMessage();

    OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());
    OAuthAccessTokenResponse oAuthResponse = oAuthClient.accessToken(clientReqAccessToken);

    return "Access Token: "   oAuthResponse.getAccessToken()   ", Expires in: "   oAuthResponse.getBody();
}
 

Ребята, не могли бы вы помочь мне превратить это в весну ?
Я бы с удовольствием попробовал это с помощью RestTemplate, но могу понять, как правильно добавить параметры. Также Spotify нуждается в том, чтобы он был x-www-форма-url-кодирован

Спасибо!

Комментарии:

1. Вы имели в виду создать запрос на публикацию api?

Ответ №1:

Если вы намерены создать механизм для получения учетных данных из других служб API, то сначала вы можете создать проверку подлинности spring. Вы можете посмотреть некоторые учебные пособия здесь или основные здесь

После этого создайте сущности для клиентов или пользователей и соответствующим образом настройте аутентификацию (например, User, UserDetail). Затем выборочно рассмотрите основную аутентификацию для получения токена (в данном случае из Spotify) с помощью контроллера rest. Например,

 @RestController
@RequestMapping("/api/token")
public class TokenController {
    
    @RequestMapping(method = RequestMethod.GET)
    public String getToken(@AuthenticationPrincipal UserDetail principal) {
        
        String client_id = principal.getId();
        String client_secret = principal.getSecret();

        OAuthClientRequest clientReqAccessToken = OAuthClientRequest
            .tokenLocation("https://accounts.spotify.com/api/token")
            .setGrantType(GrantType.CLIENT_CREDENTIALS).setClientId(client_id).setClientSecret(client_secret)
            .buildBodyMessage();

        OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());
        OAuthAccessTokenResponse oAuthResponse = oAuthClient.accessToken(clientReqAccessToken);

        return "Access Token: "   oAuthResponse.getAccessToken()   ", Expires in: "   oAuthResponse.getBody();
    }
}

 

Комментарии:

1. Звучит правильно! Спасибо!