Spotify API извлеченный токен доступа не работает - PullRequest
0 голосов
/ 02 апреля 2019

Я создаю приложение React / C # с API spotify, я получаю токен доступа, но он не работает.Я получаю сообщение об ошибке (показано ниже) при попытке вызвать API (не знаю, почему написано «Неверное имя пользователя», поскольку оно никогда не используется):

Ошибка: сообщение: «Недопустимое имя пользователя "status: 404

code относится к более раннему этапу процесса аутентификации (работало, когда я использовал узел, поэтому я предполагаю, что часть верна), и я использовал все области, чтобы быть увереннымэто не проблема playlist-modify-public playlist-modify-private user-read-private user-read-email user-read-playback-state user-read-recently-played

Мой код C # для получения токена доступа:

var spotifyClientId = "id";
var spotifySecret = "secret";

var webClient = new WebClient();

var postparams = new NameValueCollection();
postparams.Add("grant_type", "client_credentials");
postparams.Add("code", code);
postparams.Add("redirect_uri", "http://localhost:8000/");

//api documentation says you can post clientid/secret in either body or header
postparams.Add("client_id", spotifyClientId);
postparams.Add("client_secret", spotifySecret);

//var authHeader = Convert.ToBase64String(Encoding.Default.GetBytes($"{spotifyClientId}:{spotifySecret}"));
//webClient.Headers.Add(HttpRequestHeader.Authorization, "Basic " + authHeader);

var tokenResponse = webClient.UploadValues("https://accounts.spotify.com/api/token", postparams);

var textResponse = Encoding.UTF8.GetString(tokenResponse);

return Json(textResponse);

Итак, я получаю ответ (примечание: токен доступа очень короткий)

"\"access_token\":\"BQAOYJZnfS0LPEwwZ_06Be76mx59bpoPsVPD0uTvvrwvDtSNi9flgeZQK8kDPSRyTFdE70iBk5PtEAvqnIQ\",\"token_type\":\"Bearer\",\"expires_in\":3600,\"scope\":\"\"}"` 

И когда я пытаюсь вызвать API с этим токеном, я получаю сообщение об ошибке, показанное выше.

Если я получаю токен вручную, я могу выполнять вызовы API из внешнего интерфейса

Документация

1 Ответ

0 голосов
/ 02 апреля 2019

Я понял, что у почтальона есть пример кода после вызова авторизации .. После успешной проверки oauth перейдите к коду в правом углу и коду примера кода, установите restsharp и удалите некоторые параметры, чтобы вы получили что-то вроде этого.

        var client = new RestClient("https://accounts.spotify.com/api/token");
        var request = new RestRequest(Method.POST);
        request.AddHeader("Authorization", "Basic ODAzNTkzMDMxNzIwNGViNzlhMf54f45f5454fNTJhMTg=");
        request.AddParameter("grant_type", "authorization_code");
        request.AddParameter("code", code);
        request.AddParameter("redirect_uri", "http://localhost:8000/");

        IRestResponse response = client.Execute(request);

        return Json(response.Content);
...