Работа с Spotify API - Как перейти по нескольким ссылкам перенаправления в Java? - PullRequest
0 голосов
/ 14 апреля 2020

Я делаю проект Hyperskill, который использует Spotify Web Api. Я использую библиотеку Spotify Api Wrapper (https://github.com/thelinmichael/spotify-web-api-java). Я работаю с потоком кода авторизации (https://developer.spotify.com/documentation/general/guides/authorization-guide/#authorization -code-flow ). Это означает, что когда пользователь предоставляет доступ, Spotify перенаправляет меня на локальный хост с токеном доступа. Короче говоря, я могу создать сервер localhost с помощью ServerSocket, и я могу заставить пользователя предоставлять или запрещать доступ к Spotify, и он прекрасно генерирует мне маркер доступа в ссылке localhost. Моя проблема в том, что я не могу получить этот токен / код доступа по ссылке обратного вызова (https://example.com/callback?code=NApCCg..BkWtQ&state=profile%2Factivity). Я знаю, что должен следовать перенаправлению, и я предполагаю, что Spotify делает более 1 перенаправления, потому что мой код выводит это:

https://accounts.spotify.com/login?continue=https%3A%2F%2Faccounts.spotify.com%2Fauthorize%3Fclient_id%123EXAMPLECODE%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A8080%26response_type%3Dcode

 URL url = new URL("https://accounts.spotify.com/authorize?client_id=123EXAMPLECODE&redirect_uri=http://localhost:8080&response_type=code");
 HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
 ucon.setInstanceFollowRedirects(false);
 URL secondURL = new URL(ucon.getHeaderField("Location"));
 URLConnection conn = secondURL.openConnection();
 System.out.println(secondURL);

Вы можете видеть, что он перенаправляет меня с "авторизации" на "вход в систему", а затем обратно на локальный хост, и я могу выполнить перенаправление на вход в систему. Как я могу сделать это после localhost? Или есть какой-нибудь способ получить этот код от обратного вызова?

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 15 апреля 2020

Мне удалось получить токен из ссылки обратного вызова с помощью метода getQuery () HttpExchange. Пожалуйста, рассмотрите этот вопрос как решенный.

...