私は Spotify API を使用しています。基本的には、ユーザーのプレイリストにアクセスし、プレイリストを変更し、新しいプレイリストを作成できるようにしたいと考えています。クライアント側 ( https://github.com/JMPerez/spotify-web-api-js
) には JavaScript ラッパーを使用し、承認には暗黙的な付与フローを使用していました。例を使用して、ユーザーとそのプレイリストにアクセスするポイントに到達し、スコープに 1 つの追加スコープ ( playlist-read-private
) を追加することができました。必要なもの ( などplaylist-modify-public
) を追加しようとしていますが、機能していません。承認する (またはリダイレクト URL に移動する) のではなく、XMLHttpRequest エラーの 401: Unauthorized がスローされます。エラーの説明は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 を使用する場合、新しいスコープを追加するにはどうすればよいですか?
ありがとうございました!