Estoy tratando de reproducir una pista en mi aplicación usando spotify-web-api-node
const playSong = async () => { // Verify access token with console.log(spotifyApi.getAccessToken()) setCurrentTrackId(track.track.id); setIsPlaying(true); spotifyApi .play({ uris: [track.track.uri], }) .then((d) => console.log("hi", d)) .catch((e) => console.log("err", e)); };https://github.com/caseysiebel/spotify-clone/blob/main/components/Song.tsx#L19
Cuando realizo esta llamada a spotifyApi.play() , recibo este error WebapiRegularError: An error occurred while communicating with Spotify's Web API. Details: Permissions missing. con el código de error 401.
Tengo el token de acceso y el token de actualización configurados en mi aplicación. Puedo iniciar sesión y obtener datos de la API, como datos de usuario, lista de reproducción y seguimiento. Pero cuando trato de reproducir una pista, dice que no tengo permiso.
Pensé que esto podría tener algo que ver con la forma en que configuré los scopes en la API de Spotify, pero me parecen correctos.
const scopes = [ "user-read-email", "playlist-read-private", "playlist-read-collaborative", "user-read-email", "streaming", "user-read-private", "user-library-read", "user-top-read", // "user-library-modify" "user-read-playback-state", "user-modify-playback-state", "user-read-currently-playing", "user-read-recently-played", "user-read-playback-state", "user-follow-read", ].join(",");https://github.com/caseysiebel/spotify-clone/blob/main/lib/spotify.ts#L5
Parece que esto tiene algo que ver con los scopes pasados en la autorización LOGIN_URL pero el ámbito streaming definitivamente está presente y no puedo ver cuál es el problema. Parece así porque ciertas solicitudes de API funcionan y otras dicen que no tienen permiso.
¿Alguien ve qué podría estar causando este problema con el problema de los permisos faltantes y la API de Spotify?
En lib/spotify.ts , la línea 23 debía ser scope: scopes, no scopes: scopes, .
En realidad, usar la verificación de tipos probablemente habría sido útil aquí.
Creo que el problema está en tu archivo spotify.js. Aquí en clientId, ¿está seguro de que el nombre NEXT_PUBLICCLIENT_ID es correcto? ¿No debería ser NEXT_PUBLIC_CLIENT_ID?
const spotifyApi = new SpotifyWebApi({ clientId: process.env.NEXT_PUBLICCLIENT_ID, clientSecret: process.env.NEXT_PUBLIC_CLIENT_SECERT, });Intente y hágame saber si esto funciona o no.