我正在使用 Spotify API,基本上我希望能够访问用户的播放列表、修改播放列表和创建新的播放列表。我将 JavaScript 包装器用于客户端 ( https://github.com/JMPerez/spotify-web-api-js
) 并使用隐式授权流进行授权。使用这些示例,我可以访问用户和他们的播放列表,并且我能够向这些范围添加一个额外的范围 ( playlist-read-private
)。我正在尝试添加其他我需要的(如playlist-modify-public
),但它不起作用。它不会授权(或转到重定向 URL),而是抛出 401:未授权的 XMLHttpRequest 错误。错误描述是error_description=Illegal+scope:+playlist-modify-public
。我第一次添加新范围时,它不起作用。我休息了一下,回到我的代码并重新尝试完全相同的东西,它突然工作了(弹出一个新授权的弹出窗口)。
这是授权码:
document.getElementById('login-button').addEventListener('click', function() {
var client_id = '03ffe0cac0a0401aa6673c3cf6d02ced'; // Your client id
var redirect_uri = 'http://localhost:8888/'; // Your redirect uri
var state = generateRandomString(16);
localStorage.setItem(stateKey, state);
var scope = 'playlist-read-private user-read-private user-read-email';
var url = 'https://accounts.spotify.com/authorize';
url += '?response_type=token';
url += '&client_id=' + encodeURIComponent(client_id);
url += '&scope=' + encodeURIComponent(scope);
url += '&redirect_uri=' + encodeURIComponent(redirect_uri);
url += '&state=' + encodeURIComponent(state);
window.location = url;
// onAuthorize();
}, false);
为了添加一个新的范围,我想做的只是改变
'playlist-read-private user-read-private user-read-email'
至
'playlist-read-private playlist-modify-private user-read-private user-read-email'
一切都适用于第一个,但一旦我改变它,应用程序就会以我上面描述的方式中断。
任何如何使应用程序接受其他范围以便我可以实际修改播放列表的想法将不胜感激。如果我能澄清任何事情,请告诉我,非常感谢!
(所有代码都可以在这里找到,但我正在参加黑客马拉松,所以它可能会很快改变)
TL;DR:当我使用 Spotify API 时如何添加新范围?
谢谢!