tl; dr: рабочий фрагмент внизу этого ответа!
То, как вы используете $.ajax()
, не соответствует принципу работы конечной точки Spotify.Ваш фрагмент генерирует запрос GET
.Документы, однако, утверждают, что PUT
необходим для конечной точки, которую вы хотите использовать.Как видно из фрагмента, это исправлено с помощью type: 'PUT'
.Для передачи URL используется ключ url
.
Использование data
было правильным выбором, хотя некоторые вещи отсутствуют.Если вы используете его, как вы опубликовали данные передаются в виде данных.Это не то, чего ожидает конечная точка Spotify.Вам на самом деле нужно передать данные в пределах полезной нагрузки запроса.Это достигается с помощью dataType: "json"
& contentType: "application/json"
.Использование JSON.stringify()
для данных также решает некоторые проблемы, связанные с этой проблемой.
В полезной нагрузке запроса вы использовали поле context_uri
.Вот как Spotify описывает поле context_uri
.
Необязательно.Spotify URI контекста для воспроизведения.Действительными контекстами являются альбомы, исполнители, плейлисты.
Поэтому дорожка не является контекстом.Так что если вы хотите воспроизвести трек, это не та область, с которой вы хотите идти.В вашем случае uris
необходимо.Так Spotify описывает поле uris
.
Необязательно.Массив JSON URI дорожек Spotify для воспроизведения.
Когда необходимо воспроизвести только одну дорожку, все еще требуется массив, как вы можете видеть во фрагменте.
Здесь вы можете найти рабочий фрагмент, где я исправил ваш вызов AJAX.Маркер доступа, используемый в этом фрагменте, должен по крайней мере включать область действия user-modify-playback-state
.
$.ajax({
url: 'https://api.spotify.com/v1/me/player/play',
type: 'PUT',
headers: {
'Authorization': 'Bearer ' + access_token
},
dataType: "json",
contentType: "application/json",
data: JSON.stringify({
"uris": ["spotify:track:2iCcqggir1VUNIHfKDYKX9"],
"position_ms": 5000
})
});