Estoy tratando de integrar las pistas de Spotify en mi aplicación móvil, estoy usando el SDK de Spotify para obtener una lista de las pistas que le gustan al usuario. En la respuesta de la API, solo obtengo un enlace de vista previa de la pista que en realidad es el archivo multimedia de vista previa de la pista.
Para reproducir la canción, tengo que usar Spotify SDK react-native-spotify-remote para reaccionar Native para pasar el track_id y reproducir la canción, pero cada vez que inicio sesión y reproduzco la canción, vuelve a invocar la aplicación Spotify para obtener un nuevo token incluso aunque el token anterior sigue siendo válido y cuando paso a la siguiente canción, repite este proceso nuevamente y ni siquiera reproduce la siguiente canción y aún reproduce la canción anterior.
Otro problema al que me enfrento es que tengo que cerrar la aplicación y Spotify en segundo plano, luego abrir la aplicación y presionar reproducir, se autenticará nuevamente con Spotify, incluso el último token no ha caducado, y la segunda vez cuando presionamos el botón reproducir con el modificado "spotify: track: 6IA8E2Q5ttcpbuahIejO74" uri no reproduce esa pista, en realidad no pasa nada.
Código de muestra del SDK de Spotify para el reproductor
const connectToSpotify = async () => { try { const session = await SpotifyAuth.authorize(spotifyConfig); if (session) setToken(session.accessToken); } catch (err) { console.log(err); } }; async function playEpicSong(track_id) { try { await SpotifyRemote.connect(token); await SpotifyRemote.playUri(track_id); await SpotifyRemote.seek(58000); } catch (err) { console.log(err); } }Configuración de Spotify
const spotifyConfig: ApiConfig = { clientID: "xxxxxxxxxxx", redirectURL: "mySpotify://callback", scopes: [ ApiScope.AppRemoteControlScope, ApiScope.UserFollowReadScope, ApiScope.PlaylistReadPrivateScope, ApiScope.UserReadPlaybackStateScope, ApiScope.UserReadPrivateScope, ApiScope.UserReadEmailScope, ], };Botón accionable en la selección de canciones
<Pressable onPress={() => { playEpicSong(`${item.track_id}`); navigation.navigate('player'); }}> <Text>Play Song</Text> </Pressable>