无法初始化播放器和未捕获(在承诺中)Web播放sdk Spotify

时间:2018-03-09 02:05:09

标签: javascript spotify

我参考了这个教程spotify web playback example,我可以获得access_token,device_id已经有了track id。当我在localhost上测试时,它运行良好。但是,当我部署到我的Ubuntu服务器(CakePHP项目上使用的代码)时,它会抛出错误:

  1. {message:"无法初始化播放器"}
  2. 未知(承诺)n {code:" LIST_PLAYER_NO_TRACK_PLAYER",message:" Platform not not 支持navigator.requestMediaKeySystemAccess"
  3. 未捕获的TypeError:无法读取属性'解决'未定义的
  4. 这是我的js:

    
    
    // Get the hash of the url
    const hash = window.location.hash
        .substring(1)
        .split('&')
        .reduce(function (initial, item) {
            if (item) {
                var parts = item.split('=');
                initial[parts[0]] = decodeURIComponent(parts[1]);
            }
            return initial;
        }, {});
    window.location.hash = '';
    
    // Set token
    let _token = hash.access_token;
    
    const authEndpoint = 'https://accounts.spotify.com/authorize';
    
    // Replace with your app's client ID, redirect URI and desired scopes
    const clientId = 'my_client_id';
    const redirectUri = 'http://'+ location +'/tracks/authorize';
    const scopes = [
        'streaming',
        'user-read-birthdate',
        'user-read-private',
        'user-modify-playback-state'
    ];
    
    console.log("Token: " + _token);
    
    // If there is no token, redirect to Spotify authorization
    if (!_token) {
        window.location = `${authEndpoint}?client_id=${clientId}&redirect_uri=${redirectUri}&scope=${scopes.join('%20')}&response_type=token&show_dialog=false`;
    }
    
    // Set up the Web Playback SDK
    
    window.onSpotifyPlayerAPIReady = () => {
        const player = new Spotify.Player({
            name: 'Web Playback SDK Template',
            getOAuthToken: cb => { cb(_token); }
        });
    
        // Error handling
        player.on('initialization_error', e => console.error(e));
        player.on('authentication_error', e => console.error(e));
        player.on('account_error', e => console.error(e));
        player.on('playback_error', e => console.error(e));
    
        // Playback status updates
        player.on('player_state_changed', state => {
            console.log(state)
            $('#current-track').attr('src', state.track_window.current_track.album.images[0].url);
            $('#current-track-name').text(state.track_window.current_track.name);
        });
    
        // Ready
        player.on('ready', data => {
            console.log('Ready with Device ID', data.device_id);
    
            // Play a track using our new device ID
            play(data.device_id);
        });
    
        // Connect to the player!
        player.connect();
    }
    
    // Play a specified track on the Web Playback SDK's device ID
    function play(device_id) {
        $.ajax({
            url: "https://api.spotify.com/v1/me/player/play?device_id=" + device_id,
            type: "PUT",
            data: '{"uris": ["spotify:track:5ya2gsaIhTkAuWYEMB0nw5"]}',
            beforeSend: function(xhr){xhr.setRequestHeader('Authorization', 'Bearer ' + _token );},
            success: function(data) {
                console.log(data)
            }
        });
    }
    
    
    

    这是我的html页面:

    
    
    <h4 style="margin-top: 60px">Successfully grant to play stream from Spotify Web Playback SDK</h4>
    <script src="https://sdk.scdn.co/spotify-player.js"></script>
    <?= $this->Html->script('authorize/authorize.js') ?>
    &#13;
    &#13;
    &#13;

0 个答案:

没有答案