<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic PUT https://api.spotify.com/v1/me/player/play 403 (Forbidden) and POST https://api.spotify.com/v1/me in Spotify for Developers</title>
    <link>https://community.spotify.com/t5/Spotify-for-Developers/PUT-https-api-spotify-com-v1-me-player-play-403-Forbidden-and/m-p/5920852#M13002</link>
    <description>&lt;P&gt;This is my PlayerControls.jsx and I can't get next, previous songs or play/resume current-playing song:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt; &lt;SPAN class=""&gt;React&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; styled &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"styled-components"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; {
  &lt;SPAN class=""&gt;BsFillPlayCircleFill&lt;/SPAN&gt;,&lt;SPAN class=""&gt;BsFillPauseCircleFill&lt;/SPAN&gt;,&lt;SPAN class=""&gt;BsShuffle&lt;/SPAN&gt;,
} &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react-icons/bs"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; { &lt;SPAN class=""&gt;CgPlayTrackNext&lt;/SPAN&gt;, &lt;SPAN class=""&gt;CgPlayTrackPrev&lt;/SPAN&gt; } &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react-icons/cg"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; { &lt;SPAN class=""&gt;FiRepeat&lt;/SPAN&gt; } &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react-icons/fi"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; { useStateProvider } &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"../utils/StateProvider"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; axios &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"axios"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; { reducerCases } &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"../utils/Constants"&lt;/SPAN&gt;;



&lt;SPAN class=""&gt;export&lt;/SPAN&gt; &lt;SPAN class=""&gt;default&lt;/SPAN&gt; &lt;SPAN class=""&gt;function&lt;/SPAN&gt; &lt;SPAN class=""&gt;PlayerControls&lt;/SPAN&gt;() {
  &lt;SPAN class=""&gt;const&lt;/SPAN&gt; [{ token, playerState }, dispatch] = &lt;SPAN class=""&gt;useStateProvider&lt;/SPAN&gt;();

  &lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;changeState&lt;/SPAN&gt; = &lt;SPAN class=""&gt;async&lt;/SPAN&gt; () =&amp;gt; {
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; state = playerState ? &lt;SPAN class=""&gt;"pause"&lt;/SPAN&gt; : &lt;SPAN class=""&gt;"play"&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;await&lt;/SPAN&gt; axios.&lt;SPAN class=""&gt;put&lt;/SPAN&gt;(
      &lt;SPAN class=""&gt;`https://api.spotify.com/v1/me/player/&lt;SPAN class=""&gt;${state}&lt;/SPAN&gt;`&lt;/SPAN&gt;,
      {},
      {
        &lt;SPAN class=""&gt;headers&lt;/SPAN&gt;: {
          &lt;SPAN class=""&gt;"Content-Type"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"application/json"&lt;/SPAN&gt;,
          &lt;SPAN class=""&gt;Authorization&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer "&lt;/SPAN&gt; + token,
        },
      }
    );
    &lt;SPAN class=""&gt;dispatch&lt;/SPAN&gt;({
      &lt;SPAN class=""&gt;type&lt;/SPAN&gt;: reducerCases.&lt;SPAN class=""&gt;SET_PLAYER_STATE&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;playerState&lt;/SPAN&gt;: !playerState,
    });
  };
  &lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;changeTrack&lt;/SPAN&gt; = &lt;SPAN class=""&gt;async&lt;/SPAN&gt; (&lt;SPAN class=""&gt;type&lt;/SPAN&gt;) =&amp;gt; {
    &lt;SPAN class=""&gt;await&lt;/SPAN&gt; axios.&lt;SPAN class=""&gt;post&lt;/SPAN&gt;(
      &lt;SPAN class=""&gt;`https://api.spotify.com/v1/me/player/&lt;SPAN class=""&gt;${type}&lt;/SPAN&gt;`&lt;/SPAN&gt;, {},
      {
        &lt;SPAN class=""&gt;headers&lt;/SPAN&gt;: {
          &lt;SPAN class=""&gt;"Content-Type"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"application/json"&lt;/SPAN&gt;,
          &lt;SPAN class=""&gt;Authorization&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer "&lt;/SPAN&gt; + token,
        },
      }
    );
    &lt;SPAN class=""&gt;dispatch&lt;/SPAN&gt;({ &lt;SPAN class=""&gt;type&lt;/SPAN&gt;: reducerCases.&lt;SPAN class=""&gt;SET_PLAYER_STATE&lt;/SPAN&gt;, &lt;SPAN class=""&gt;playerState&lt;/SPAN&gt;: &lt;SPAN class=""&gt;true&lt;/SPAN&gt; });
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; response = &lt;SPAN class=""&gt;await&lt;/SPAN&gt; axios.&lt;SPAN class=""&gt;get&lt;/SPAN&gt;(
      &lt;SPAN class=""&gt;"https://api.spotify.com/v1/me/player/currently-playing"&lt;/SPAN&gt;,
      {
        &lt;SPAN class=""&gt;headers&lt;/SPAN&gt;: {
          &lt;SPAN class=""&gt;"Content-Type"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"application/json"&lt;/SPAN&gt;,
          &lt;SPAN class=""&gt;Authorization&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer "&lt;/SPAN&gt; + token,
        },
      }
    );
    &lt;SPAN class=""&gt;if&lt;/SPAN&gt; (response.&lt;SPAN class=""&gt;data&lt;/SPAN&gt; !== &lt;SPAN class=""&gt;""&lt;/SPAN&gt;) {
      &lt;SPAN class=""&gt;const&lt;/SPAN&gt; {item} = response.&lt;SPAN class=""&gt;data&lt;/SPAN&gt;;
      &lt;SPAN class=""&gt;const&lt;/SPAN&gt; currentPlaying = {
        &lt;SPAN class=""&gt;id&lt;/SPAN&gt;: item.&lt;SPAN class=""&gt;id&lt;/SPAN&gt;,
        &lt;SPAN class=""&gt;name&lt;/SPAN&gt;: item.&lt;SPAN class=""&gt;name&lt;/SPAN&gt;,
        &lt;SPAN class=""&gt;artists&lt;/SPAN&gt;: item.&lt;SPAN class=""&gt;artists&lt;/SPAN&gt;.&lt;SPAN class=""&gt;map&lt;/SPAN&gt;(&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;artist&lt;/SPAN&gt;) =&amp;gt;&lt;/SPAN&gt; artist.&lt;SPAN class=""&gt;name&lt;/SPAN&gt;),
        &lt;SPAN class=""&gt;image&lt;/SPAN&gt;: item.&lt;SPAN class=""&gt;album&lt;/SPAN&gt;.&lt;SPAN class=""&gt;images&lt;/SPAN&gt;[&lt;SPAN class=""&gt;2&lt;/SPAN&gt;].&lt;SPAN class=""&gt;url&lt;/SPAN&gt;,
      };
      &lt;SPAN class=""&gt;dispatch&lt;/SPAN&gt;({ &lt;SPAN class=""&gt;type&lt;/SPAN&gt;: reducerCases.&lt;SPAN class=""&gt;SET_PLAYING&lt;/SPAN&gt;, currentPlaying });
    } &lt;SPAN class=""&gt;else&lt;/SPAN&gt; {
      &lt;SPAN class=""&gt;dispatch&lt;/SPAN&gt;({ &lt;SPAN class=""&gt;type&lt;/SPAN&gt;: reducerCases.&lt;SPAN class=""&gt;SET_PLAYING&lt;/SPAN&gt;, &lt;SPAN class=""&gt;currentPlaying&lt;/SPAN&gt;: &lt;SPAN class=""&gt;null&lt;/SPAN&gt; });
    }
  };
  &lt;SPAN class=""&gt;return&lt;/SPAN&gt; (
    &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Container&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"shuffle"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;BsShuffle&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"previous"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;CgPlayTrackPrev&lt;/SPAN&gt; &lt;SPAN class=""&gt;onClick&lt;/SPAN&gt;=&lt;SPAN class=""&gt;{()&lt;/SPAN&gt; =&amp;gt;&lt;/SPAN&gt; changeTrack("previous")} /&amp;gt;
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"state"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        {playerState ? 
        ( &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;BsFillPauseCircleFill&lt;/SPAN&gt; &lt;SPAN class=""&gt;onClick&lt;/SPAN&gt;=&lt;SPAN class=""&gt;{changeState}&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt; ) : ( &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;BsFillPlayCircleFill&lt;/SPAN&gt; &lt;SPAN class=""&gt;onClick&lt;/SPAN&gt;=&lt;SPAN class=""&gt;{changeState}&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt; )
        }
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"next"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;CgPlayTrackNext&lt;/SPAN&gt; &lt;SPAN class=""&gt;onClick&lt;/SPAN&gt;=&lt;SPAN class=""&gt;{()&lt;/SPAN&gt; =&amp;gt;&lt;/SPAN&gt; changeTrack("next")} /&amp;gt;
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"repeat"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FiRepeat&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Container&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
  );
}&lt;/PRE&gt;&lt;P&gt;I have also imported scope in the Login.jsx and user has to sign up first to use app: I have imply every scope needed for the API but it does not work.&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt; &lt;SPAN class=""&gt;React&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; styled &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"styled-components"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; &lt;SPAN class=""&gt;BeetifyLogo&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;'../picture/Beetifylogo.png'&lt;/SPAN&gt;

&lt;SPAN class=""&gt;export&lt;/SPAN&gt; &lt;SPAN class=""&gt;default&lt;/SPAN&gt; &lt;SPAN class=""&gt;function&lt;/SPAN&gt; &lt;SPAN class=""&gt;Login&lt;/SPAN&gt;() {
  &lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;handleClick&lt;/SPAN&gt; = &lt;SPAN class=""&gt;async&lt;/SPAN&gt; () =&amp;gt; {
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; client_id = &lt;SPAN class=""&gt;"1a86a771119745668fedc03a5622ed35"&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; redirect_uri = &lt;SPAN class=""&gt;"http://localhost:3000/beetify"&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; api_uri = &lt;SPAN class=""&gt;"https://accounts.spotify.com/authorize"&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; scope = [
      &lt;SPAN class=""&gt;"user-read-private"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-email"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-modify-playback-state"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-playback-state"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-currently-playing"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-recently-played"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-playback-position"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-top-read"&lt;/SPAN&gt;,
    ];
    
    &lt;SPAN class=""&gt;window&lt;/SPAN&gt;.&lt;SPAN class=""&gt;location&lt;/SPAN&gt;.&lt;SPAN class=""&gt;href&lt;/SPAN&gt; = &lt;SPAN class=""&gt;`&lt;SPAN class=""&gt;${api_uri}&lt;/SPAN&gt;?client_id=&lt;SPAN class=""&gt;${client_id}&lt;/SPAN&gt;&amp;amp;redirect_uri=&lt;SPAN class=""&gt;${redirect_uri}&lt;/SPAN&gt;&amp;amp;scope=&lt;SPAN class=""&gt;${scope.join(
      " "
    )}&lt;/SPAN&gt;&amp;amp;response_type=token&amp;amp;show_dialog=true`&lt;/SPAN&gt;;
  };&lt;/PRE&gt;&lt;P&gt;I can only get&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"&lt;A href="https://api.spotify.com/v1/me/player/currently-playing" target="_blank" rel="noopener"&gt;https://api.spotify.com/v1/me/player/currently-playing&lt;/A&gt;"&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;but I can't choose other songs in the soundtrack&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"PUT &lt;A href="https://api.spotify.com/v1/me/player/play" target="_blank" rel="noopener"&gt;https://api.spotify.com/v1/me/player/play&lt;/A&gt; 403 (Forbidden)". Everything is 403 error. Please help!&lt;/P&gt;</description>
    <pubDate>Sun, 03 Mar 2024 10:00:32 GMT</pubDate>
    <dc:creator>Ea123</dc:creator>
    <dc:date>2024-03-03T10:00:32Z</dc:date>
    <item>
      <title>PUT https://api.spotify.com/v1/me/player/play 403 (Forbidden) and POST https://api.spotify.com/v1/me</title>
      <link>https://community.spotify.com/t5/Spotify-for-Developers/PUT-https-api-spotify-com-v1-me-player-play-403-Forbidden-and/m-p/5920852#M13002</link>
      <description>&lt;P&gt;This is my PlayerControls.jsx and I can't get next, previous songs or play/resume current-playing song:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt; &lt;SPAN class=""&gt;React&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; styled &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"styled-components"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; {
  &lt;SPAN class=""&gt;BsFillPlayCircleFill&lt;/SPAN&gt;,&lt;SPAN class=""&gt;BsFillPauseCircleFill&lt;/SPAN&gt;,&lt;SPAN class=""&gt;BsShuffle&lt;/SPAN&gt;,
} &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react-icons/bs"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; { &lt;SPAN class=""&gt;CgPlayTrackNext&lt;/SPAN&gt;, &lt;SPAN class=""&gt;CgPlayTrackPrev&lt;/SPAN&gt; } &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react-icons/cg"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; { &lt;SPAN class=""&gt;FiRepeat&lt;/SPAN&gt; } &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react-icons/fi"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; { useStateProvider } &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"../utils/StateProvider"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; axios &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"axios"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; { reducerCases } &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"../utils/Constants"&lt;/SPAN&gt;;



&lt;SPAN class=""&gt;export&lt;/SPAN&gt; &lt;SPAN class=""&gt;default&lt;/SPAN&gt; &lt;SPAN class=""&gt;function&lt;/SPAN&gt; &lt;SPAN class=""&gt;PlayerControls&lt;/SPAN&gt;() {
  &lt;SPAN class=""&gt;const&lt;/SPAN&gt; [{ token, playerState }, dispatch] = &lt;SPAN class=""&gt;useStateProvider&lt;/SPAN&gt;();

  &lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;changeState&lt;/SPAN&gt; = &lt;SPAN class=""&gt;async&lt;/SPAN&gt; () =&amp;gt; {
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; state = playerState ? &lt;SPAN class=""&gt;"pause"&lt;/SPAN&gt; : &lt;SPAN class=""&gt;"play"&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;await&lt;/SPAN&gt; axios.&lt;SPAN class=""&gt;put&lt;/SPAN&gt;(
      &lt;SPAN class=""&gt;`https://api.spotify.com/v1/me/player/&lt;SPAN class=""&gt;${state}&lt;/SPAN&gt;`&lt;/SPAN&gt;,
      {},
      {
        &lt;SPAN class=""&gt;headers&lt;/SPAN&gt;: {
          &lt;SPAN class=""&gt;"Content-Type"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"application/json"&lt;/SPAN&gt;,
          &lt;SPAN class=""&gt;Authorization&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer "&lt;/SPAN&gt; + token,
        },
      }
    );
    &lt;SPAN class=""&gt;dispatch&lt;/SPAN&gt;({
      &lt;SPAN class=""&gt;type&lt;/SPAN&gt;: reducerCases.&lt;SPAN class=""&gt;SET_PLAYER_STATE&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;playerState&lt;/SPAN&gt;: !playerState,
    });
  };
  &lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;changeTrack&lt;/SPAN&gt; = &lt;SPAN class=""&gt;async&lt;/SPAN&gt; (&lt;SPAN class=""&gt;type&lt;/SPAN&gt;) =&amp;gt; {
    &lt;SPAN class=""&gt;await&lt;/SPAN&gt; axios.&lt;SPAN class=""&gt;post&lt;/SPAN&gt;(
      &lt;SPAN class=""&gt;`https://api.spotify.com/v1/me/player/&lt;SPAN class=""&gt;${type}&lt;/SPAN&gt;`&lt;/SPAN&gt;, {},
      {
        &lt;SPAN class=""&gt;headers&lt;/SPAN&gt;: {
          &lt;SPAN class=""&gt;"Content-Type"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"application/json"&lt;/SPAN&gt;,
          &lt;SPAN class=""&gt;Authorization&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer "&lt;/SPAN&gt; + token,
        },
      }
    );
    &lt;SPAN class=""&gt;dispatch&lt;/SPAN&gt;({ &lt;SPAN class=""&gt;type&lt;/SPAN&gt;: reducerCases.&lt;SPAN class=""&gt;SET_PLAYER_STATE&lt;/SPAN&gt;, &lt;SPAN class=""&gt;playerState&lt;/SPAN&gt;: &lt;SPAN class=""&gt;true&lt;/SPAN&gt; });
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; response = &lt;SPAN class=""&gt;await&lt;/SPAN&gt; axios.&lt;SPAN class=""&gt;get&lt;/SPAN&gt;(
      &lt;SPAN class=""&gt;"https://api.spotify.com/v1/me/player/currently-playing"&lt;/SPAN&gt;,
      {
        &lt;SPAN class=""&gt;headers&lt;/SPAN&gt;: {
          &lt;SPAN class=""&gt;"Content-Type"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"application/json"&lt;/SPAN&gt;,
          &lt;SPAN class=""&gt;Authorization&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer "&lt;/SPAN&gt; + token,
        },
      }
    );
    &lt;SPAN class=""&gt;if&lt;/SPAN&gt; (response.&lt;SPAN class=""&gt;data&lt;/SPAN&gt; !== &lt;SPAN class=""&gt;""&lt;/SPAN&gt;) {
      &lt;SPAN class=""&gt;const&lt;/SPAN&gt; {item} = response.&lt;SPAN class=""&gt;data&lt;/SPAN&gt;;
      &lt;SPAN class=""&gt;const&lt;/SPAN&gt; currentPlaying = {
        &lt;SPAN class=""&gt;id&lt;/SPAN&gt;: item.&lt;SPAN class=""&gt;id&lt;/SPAN&gt;,
        &lt;SPAN class=""&gt;name&lt;/SPAN&gt;: item.&lt;SPAN class=""&gt;name&lt;/SPAN&gt;,
        &lt;SPAN class=""&gt;artists&lt;/SPAN&gt;: item.&lt;SPAN class=""&gt;artists&lt;/SPAN&gt;.&lt;SPAN class=""&gt;map&lt;/SPAN&gt;(&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;artist&lt;/SPAN&gt;) =&amp;gt;&lt;/SPAN&gt; artist.&lt;SPAN class=""&gt;name&lt;/SPAN&gt;),
        &lt;SPAN class=""&gt;image&lt;/SPAN&gt;: item.&lt;SPAN class=""&gt;album&lt;/SPAN&gt;.&lt;SPAN class=""&gt;images&lt;/SPAN&gt;[&lt;SPAN class=""&gt;2&lt;/SPAN&gt;].&lt;SPAN class=""&gt;url&lt;/SPAN&gt;,
      };
      &lt;SPAN class=""&gt;dispatch&lt;/SPAN&gt;({ &lt;SPAN class=""&gt;type&lt;/SPAN&gt;: reducerCases.&lt;SPAN class=""&gt;SET_PLAYING&lt;/SPAN&gt;, currentPlaying });
    } &lt;SPAN class=""&gt;else&lt;/SPAN&gt; {
      &lt;SPAN class=""&gt;dispatch&lt;/SPAN&gt;({ &lt;SPAN class=""&gt;type&lt;/SPAN&gt;: reducerCases.&lt;SPAN class=""&gt;SET_PLAYING&lt;/SPAN&gt;, &lt;SPAN class=""&gt;currentPlaying&lt;/SPAN&gt;: &lt;SPAN class=""&gt;null&lt;/SPAN&gt; });
    }
  };
  &lt;SPAN class=""&gt;return&lt;/SPAN&gt; (
    &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;Container&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"shuffle"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;BsShuffle&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"previous"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;CgPlayTrackPrev&lt;/SPAN&gt; &lt;SPAN class=""&gt;onClick&lt;/SPAN&gt;=&lt;SPAN class=""&gt;{()&lt;/SPAN&gt; =&amp;gt;&lt;/SPAN&gt; changeTrack("previous")} /&amp;gt;
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"state"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        {playerState ? 
        ( &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;BsFillPauseCircleFill&lt;/SPAN&gt; &lt;SPAN class=""&gt;onClick&lt;/SPAN&gt;=&lt;SPAN class=""&gt;{changeState}&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt; ) : ( &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;BsFillPlayCircleFill&lt;/SPAN&gt; &lt;SPAN class=""&gt;onClick&lt;/SPAN&gt;=&lt;SPAN class=""&gt;{changeState}&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt; )
        }
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"next"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;CgPlayTrackNext&lt;/SPAN&gt; &lt;SPAN class=""&gt;onClick&lt;/SPAN&gt;=&lt;SPAN class=""&gt;{()&lt;/SPAN&gt; =&amp;gt;&lt;/SPAN&gt; changeTrack("next")} /&amp;gt;
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;div&lt;/SPAN&gt; &lt;SPAN class=""&gt;className&lt;/SPAN&gt;=&lt;SPAN class=""&gt;"repeat"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;&amp;lt;&lt;SPAN class=""&gt;FiRepeat&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;&amp;lt;/&lt;SPAN class=""&gt;Container&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
  );
}&lt;/PRE&gt;&lt;P&gt;I have also imported scope in the Login.jsx and user has to sign up first to use app: I have imply every scope needed for the API but it does not work.&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt; &lt;SPAN class=""&gt;React&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"react"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; styled &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;"styled-components"&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; &lt;SPAN class=""&gt;BeetifyLogo&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;'../picture/Beetifylogo.png'&lt;/SPAN&gt;

&lt;SPAN class=""&gt;export&lt;/SPAN&gt; &lt;SPAN class=""&gt;default&lt;/SPAN&gt; &lt;SPAN class=""&gt;function&lt;/SPAN&gt; &lt;SPAN class=""&gt;Login&lt;/SPAN&gt;() {
  &lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;handleClick&lt;/SPAN&gt; = &lt;SPAN class=""&gt;async&lt;/SPAN&gt; () =&amp;gt; {
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; client_id = &lt;SPAN class=""&gt;"1a86a771119745668fedc03a5622ed35"&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; redirect_uri = &lt;SPAN class=""&gt;"http://localhost:3000/beetify"&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; api_uri = &lt;SPAN class=""&gt;"https://accounts.spotify.com/authorize"&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;const&lt;/SPAN&gt; scope = [
      &lt;SPAN class=""&gt;"user-read-private"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-email"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-modify-playback-state"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-playback-state"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-currently-playing"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-recently-played"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-read-playback-position"&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;"user-top-read"&lt;/SPAN&gt;,
    ];
    
    &lt;SPAN class=""&gt;window&lt;/SPAN&gt;.&lt;SPAN class=""&gt;location&lt;/SPAN&gt;.&lt;SPAN class=""&gt;href&lt;/SPAN&gt; = &lt;SPAN class=""&gt;`&lt;SPAN class=""&gt;${api_uri}&lt;/SPAN&gt;?client_id=&lt;SPAN class=""&gt;${client_id}&lt;/SPAN&gt;&amp;amp;redirect_uri=&lt;SPAN class=""&gt;${redirect_uri}&lt;/SPAN&gt;&amp;amp;scope=&lt;SPAN class=""&gt;${scope.join(
      " "
    )}&lt;/SPAN&gt;&amp;amp;response_type=token&amp;amp;show_dialog=true`&lt;/SPAN&gt;;
  };&lt;/PRE&gt;&lt;P&gt;I can only get&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"&lt;A href="https://api.spotify.com/v1/me/player/currently-playing" target="_blank" rel="noopener"&gt;https://api.spotify.com/v1/me/player/currently-playing&lt;/A&gt;"&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;but I can't choose other songs in the soundtrack&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;"PUT &lt;A href="https://api.spotify.com/v1/me/player/play" target="_blank" rel="noopener"&gt;https://api.spotify.com/v1/me/player/play&lt;/A&gt; 403 (Forbidden)". Everything is 403 error. Please help!&lt;/P&gt;</description>
      <pubDate>Sun, 03 Mar 2024 10:00:32 GMT</pubDate>
      <guid>https://community.spotify.com/t5/Spotify-for-Developers/PUT-https-api-spotify-com-v1-me-player-play-403-Forbidden-and/m-p/5920852#M13002</guid>
      <dc:creator>Ea123</dc:creator>
      <dc:date>2024-03-03T10:00:32Z</dc:date>
    </item>
  </channel>
</rss>

