Ошибка 400 API Spotify: «поддерживается только допустимая аутентификация на носителе» - PullRequest
0 голосов
/ 27 февраля 2020

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

        let parsed = queryString.parse(window.location.search);
        let accessToken = parsed.access_token;
        console.log(parsed);
        console.log(accessToken);
        fetch('https://api.spotify.com/v1/me', {
            headers: {'Authorization': 'Bearer' + accessToken},
            json: true
        }).then((res) => res.json())
        .then(data => console.log(data));
    }

Но ошибка 400 по-прежнему появляется, даже если токен доступа работает. Я даже проверил метод try it для этой конкретной функции c и с тем же маркером он смог получить данные. Для получения соответствующей информации о том, что я изменил в примере кода для аутентификации, я изменил redirect_uri = "localhost: 8888 / callback", а затем я также изменил

res.redirect('http://localhost:3000/profile/?' +
          querystring.stringify({
            access_token: access_token,
            refresh_token: refresh_token
          }));
      }

на go на страницу своего профиля для моего приложения , Мне было интересно, нужно ли мне каким-то образом дать разрешение на страницу моего профиля, но я уже добавил его для перенаправления URL на всякий случай. Спасибо за чтение

1 Ответ

2 голосов
/ 27 февраля 2020

Между "Носителем" и вашим токеном должно быть пробел . Вот чего не хватает.

let parsed = queryString.parse(window.location.search);
    let accessToken = parsed.access_token;
    console.log(parsed);
    console.log(accessToken);
    fetch('https://api.spotify.com/v1/me', {
        headers: {'Authorization': 'Bearer ' + accessToken},
        json: true
    }).then((res) => res.json())
    .then(data => console.log(data));
}

Обратите внимание, как я добавил пробел после "Bearer".

Он также присутствует на сайте spotify в их примере кода. https://developer.spotify.com/documentation/general/guides/authorization-guide/ (на этой странице не было постоянной ссылки, просто выполните поиск "bearer")

Кроме того, я бы предложил вам использовать литералы шаблона для определения таких строк , поскольку это проще, более читабельно и может предотвратить такие ошибки в будущем.

headers: {'Authorization': `Bearer ${accessToken}`}

Подробнее об этом можно прочитать здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

...