我使用Spotify API,基本上我希望能够访问用户的播放列表,修改播放列表以及创建新的播放列表。我在客户端使用JavaScript包装器(https://github.com/JMPerez/spotify-web-api-js
)和授权的隐式授权流程。使用这些示例我已经到了访问用户及其播放列表的位置,我能够向作用域添加一个额外的作用域(playlist-read-private
)。我正在尝试添加我需要的其他内容(例如playlist-modify-public
),但它不起作用。它不会授权(或转到重定向URL),而是会抛出401:Unauthorized的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'
所有内容都适用于第一个,但是一旦我更改它,应用程序就会按照我上面描述的方式中断。
任何想法如何让应用程序接受其他范围,以便我可以实际修改播放列表将非常感激。如果我能澄清任何事情,请告诉我,非常感谢你!
(可以找到所有代码here,但我正在进行黑客马拉松,所以它可能会很快发生变化)
TL; DR:我在使用Spotify API时如何添加新范围?
谢谢!