Android Spotify SDK 登录错误意外令牌

Android Spotify SDK Login error Unexpected token

我正在尝试在 android 应用程序上实施 Spotify SDK,当我单击按钮时,Spotify activity 启动正常,但是当我尝试登录时没有任何反应,它记录了我一个Unexpected token error,我使用了与 Spotify 教程中完全相同的代码,希望你能帮忙

    06-29 13:40:36.677 4708-4708/com.app.project.silverbars I/chromium: [INFO:async_pixel_transfer_manager_android.cc(60)] Async pixel transfers not supported
06-29 13:40:36.789 4708-4708/com.app.project.silverbars I/chromium: [INFO:async_pixel_transfer_manager_android.cc(60)] Async pixel transfers not supported
06-29 13:40:37.505 4708-4708/com.app.project.silverbars D/dalvikvm: GC_FOR_ALLOC freed 1600K, 15% free 9975K/11700K, paused 6ms, total 6ms
06-29 13:41:02.605 4708-4708/com.app.project.silverbars I/chromium: [INFO:CONSOLE(6)] "SyntaxError: Unexpected token I
                                                                        at Object.parse (native)
                                                                        at Y (https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:5:6501)
                                                                        at xt (https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:6:14454)
                                                                        at https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:6:14923
                                                                        at i (https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:5:1297)
                                                                        at Tt (https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:6:14933)
                                                                        at o (https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:6:15632)
                                                                        at s (https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:7:2578)
                                                                        at https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:7:2750
                                                                        at f.$eval (https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js:7:10267)", source: https://d2d1dxiu3v1f2i.cloudfront.net/19b92cb/js/index.js (6)

Spotify 活动:

public class SpotifyMusic extends AppCompatActivity implements
        PlayerNotificationCallback, ConnectionStateCallback {

    // TODO: Replace with your client ID
    private static final String CLIENT_ID = "b51d25ed8e514fa5927c028d5827a358";
    // TODO: Replace with your redirect URI
    private static final String REDIRECT_URI = "yourcustomprotocol://callback";

    // Request code that will be passed together with authentication result to the onAuthenticationResult callback
    // Can be any integer
    private static final int REQUEST_CODE = 1337;

    private Player mPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spotify_music);

        AuthenticationRequest.Builder builder =
                new AuthenticationRequest.Builder(CLIENT_ID, AuthenticationResponse.Type.TOKEN, REDIRECT_URI);
        builder.setScopes(new String[]{"user-read-private", "streaming"});
        AuthenticationRequest request = builder.build();

        AuthenticationClient.openLoginActivity(this, REQUEST_CODE, request);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);

        // Check if result comes from the correct activity
        if (requestCode == REQUEST_CODE) {
            AuthenticationResponse response = AuthenticationClient.getResponse(resultCode, intent);
            if (response.getType() == AuthenticationResponse.Type.TOKEN) {
                Config playerConfig = new Config(this, response.getAccessToken(), CLIENT_ID);
                mPlayer = Spotify.getPlayer(playerConfig, this, new Player.InitializationObserver() {
                    @Override
                    public void onInitialized(Player player) {
                        mPlayer.addConnectionStateCallback(SpotifyMusic.this);
                        mPlayer.addPlayerNotificationCallback(SpotifyMusic.this);
                        mPlayer.play("spotify:track:2TpxZ7JUBn3uw46aR7qd6V");
                    }

                    @Override
                    public void onError(Throwable throwable) {
                        Log.e("MainActivity", "Could not initialize player: " + throwable.getMessage());
                    }
                });
            }
        }
    }

    @Override
    public void onLoggedIn() {
        Log.d("MainActivity", "User logged in");
    }

    @Override
    public void onLoggedOut() {
        Log.d("MainActivity", "User logged out");
    }

    @Override
    public void onLoginFailed(Throwable error) {
        Log.d("MainActivity", "Login failed");
    }

    @Override
    public void onTemporaryError() {
        Log.d("MainActivity", "Temporary error occurred");
    }

    @Override
    public void onConnectionMessage(String message) {
        Log.d("MainActivity", "Received connection message: " + message);
    }

    @Override
    public void onPlaybackEvent(EventType eventType, PlayerState playerState) {
        Log.d("MainActivity", "Playback event received: " + eventType.name());
        switch (eventType) {
            // Handle event type as necessary
            default:
                break;
        }
    }

    @Override
    public void onPlaybackError(ErrorType errorType, String errorDetails) {
        Log.d("MainActivity", "Playback error received: " + errorType.name());
        switch (errorType) {
            // Handle error type as necessary
            default:
                break;
        }
    }

    @Override
    protected void onDestroy() {
        // VERY IMPORTANT! This must always be called or else you will leak resources
        Spotify.destroyPlayer(this);
        super.onDestroy();
    }
}

你得到的实际上是 JSON.parse()

处的 JSON 错误

Throws a SyntaxError exception if the string to parse is not valid JSON.

查看您的代码后,我发现您没有完全遵循tutorial.There的规定

The completed code of MainActivity.java should now look like this, but with your own client ID and redirect URI:

因为你的redirect URI没有设置

private static final String REDIRECT_URI = "yourcustomprotocol://callback";

无法解析您的 URI。这与您的错误并非巧合,因为登录过程中使用了重定向 URI,并且基本上是 客户在成功帐户授权后将发送到的位置 .

关于如何设置它,我帮不了你太多,因为我没有使用过 Spotify SDK,但你可以使用类似

private static final String REDIRECT_URI = "http://localhost:PORT_NUMBER://authenticationResponse"

PORT_NUMBER 可以是任何大于 1024

的值

有关更多信息,这个问题可能会有帮助:Spotify redirect URI

希望你能解决这个问题。