добавить трек в плейлист Spotify API Web

Я попытался добавить трек в совместный плейлист, это мой код для токена доступа

$credentials = 'client_id:client_secret';

$headers = array(
           'Accept: */*',
           'Content-Type: application/x-www-form-urlencoded',
           'User-Agent: runscope/0.1',
           'Authorization: Basic '.base64_encode($credentials));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://accounts.spotify.com/api/token');
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,'grant_type=client_credentials');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$response = json_decode($response, true);
echo $token = $response['access_token'];
curl_close($ch);

на моей странице пользователь не зарегистрирован, поэтому я создал совместный плейлист

и это моя функция add playlist

var addplaylist = function (id,token) {

      $.ajax({
        dataType: 'text',
        type: 'post',
        url: 'https://api.spotify.com/v1/users/entelperú/playlists/6sU8XOS7BLicR3COsc0Rhp/tracks?uris=spotify:track:'+ id,
        headers: {
          Authorization: "Bearer "+token,
        },success: function (response) {
          alert(response);
        }
    });
  };

но он возвращает это

{ «ошибка»: { «статус»: 403, «сообщение»: «Этот запрос требует аутентификации пользователя». } }

Я не знаю, что случилось, я создал токен доступа.


person Mauricio Verastegui Muñoz    schedule 30.01.2017    source источник


Ответы (1)


{ «ошибка»: { «статус»: 403, «сообщение»: «Этот запрос требует аутентификации пользователя». } }

Отправляемый вами запрос на добавление трека в плейлист. требуется маркер доступа, связанный с пользователем.

Используемые вами токены доступа могут поступать из трех разных потоков oAuth 2.0. Один из этих потоков, поток учетных данных клиента, возвращает маркеры анонимного доступа. Вернее, токены доступа, которые просто не подключены ни к одному пользователю. Подробнее о потоках читайте в Руководстве по авторизации.

Для некоторых конечных точек можно использовать токены анонимного доступа. Например, получение плейлистов. Но для многих действий, таких как добавление треков, подписка на исполнителей и сохранение треков, требуется, чтобы пользователь дал вашему приложению явное разрешение действовать от его имени. Это разрешение также называется Областями.

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

person Michael Thelin    schedule 31.01.2017
comment
Майкл, но в приложении mi пользователь не входит в систему, поэтому никогда не получайте токен для пользователя, мне нужен плейлист, как добавить трек? - person Mauricio Verastegui Muñoz; 31.01.2017
comment
Ну, вам нужен токен доступа, который подключен к пользователю. Этот пользователь может быть вашим собственным. Вы можете хранить токен доступа где-нибудь в своем сервисе и использовать его при необходимости. Похоже, вы хотите взглянуть на поток кода авторизации, поскольку вам может понадобиться токен обновления. Пожалуйста, ознакомьтесь с Руководством по авторизации на сайте разработчика, там есть нужные вам ответы. - person Michael Thelin; 01.02.2017