如何修复'"com.spotify.error.client_authentication_failed"

How to fix '"com.spotify.error.client_authentication_failed"

我正在制作一个 Android 应用 使用 spotify 远程 SDK。但是当连接到 spotify 服务器时它会出错。代码与SDK自带的Spotify示例工程代码相同。我将客户端 id en 重定向 uri 值更改为我的,但它给出了身份验证错误。我的客户端 ID 和重定向 uri 工作,因为我在 swift 中制作相同的应用程序,一切正常。

有人知道怎么解决吗?

我正在使用 0.6.2 版

我尝试实现身份验证SDK,但错误仍然存​​在。

提前致谢!

        onConnecting();
        connect(false);
    }

    public void onConnectAndAuthorizedClicked(View view) {
        onConnecting();
        connect(true);
    }

    private void connect(boolean showAuthView) {

        SpotifyAppRemote.disconnect(mSpotifyAppRemote);
        SpotifyAppRemote.connect(this, new ConnectionParams.Builder(CLIENT_ID)
                        .setRedirectUri(REDIRECT_URI)
                        .showAuthView(showAuthView)
                        .build(),
                new Connector.ConnectionListener() {

                    @Override
                    public void onConnected(SpotifyAppRemote spotifyAppRemote) {
                        mSpotifyAppRemote = spotifyAppRemote;
                        Log.d("MainActivity", "Connected! Yay!");

                        // Now you can start interacting with App Remote
                        mSpotifyAppRemote = spotifyAppRemote;
                        SpotifyAppRemoteActivity.this.onConnected();
                    }

                    @Override
                    public void onFailure(Throwable throwable) {
                        Log.e("MainActivity", throwable.getMessage(), throwable);

                        // Something went wrong when attempting to connect! Handle errors here
                    }
                });
        SpotifyAppRemote.connect(
                getApplication(),
                new ConnectionParams.Builder(CLIENT_ID)
                        .setRedirectUri(REDIRECT_URI)
                        .showAuthView(showAuthView)
                        .build(),
                new Connector.ConnectionListener() {
                    @Override
                    public void onConnected(SpotifyAppRemote spotifyAppRemote) {

                    }

                    @Override
                    public void onFailure(Throwable error) {
                        if (error instanceof SpotifyRemoteServiceException) {
                            if (error.getCause() instanceof SecurityException) {
                                logError(error, "SecurityException");
                            } else if (error.getCause() instanceof IllegalStateException) {
                                logError(error, "IllegalStateException");
                            }
                        } else if (error instanceof NotLoggedInException) {
                            logError(error, "NotLoggedInException");
                        } else if (error instanceof AuthenticationFailedException) {
                            logError(error, "AuthenticationFailedException");
                        } else if (error instanceof CouldNotFindSpotifyApp) {
                            logError(error, "CouldNotFindSpotifyApp");
                        } else if (error instanceof LoggedOutException) {
                            logError(error, "LoggedOutException");
                        } else if (error instanceof OfflineModeException) {
                            logError(error, "OfflineModeException");
                        } else if (error instanceof UserNotAuthorizedException) {
                            logError(error, "UserNotAuthorizedException");
                        } else if (error instanceof UnsupportedFeatureVersionException) {
                            logError(error, "UnsupportedFeatureVersionException");
                        } else if (error instanceof SpotifyDisconnectedException) {
                            logError(error, "SpotifyDisconnectedException");
                        } else if (error instanceof SpotifyConnectionTerminatedException) {
                            logError(error, "SpotifyConnectionTerminatedException");
                        } else {
                            logError(error, String.format("Connection failed: %s", error));
                        }
                        SpotifyAppRemoteActivity.this.onDisconnected();
                    }
                });
    }```

D/SPOTIFY_APP_REMOTE(24936): Message from Spotify: [3,{"message":"com.spotify.mobile.android.spotlets.appprotocol.model.AppProtocol$Message"},"com.spotify.error.client_authentication_failed"]
D/SPOTIFY_APP_REMOTE(24936): Connection failed.
D/SPOTIFY_APP_REMOTE(24936): com.spotify.protocol.client.error.RemoteClientException: {"message":"com.spotify.mobile.android.spotlets.appprotocol.model.AppProtocol$Message"}
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.protocol.client.RemoteWampClient.getRemoteClientException(RemoteWampClient.java:139)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.protocol.client.RemoteWampClient.access0(RemoteWampClient.java:16)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.protocol.client.RemoteWampClient.onAbort(RemoteWampClient.java:44)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.protocol.client.WampRouterImpl.routeAbort(WampRouterImpl.java:100)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.protocol.client.WampRouterImpl.route(WampRouterImpl.java:26)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.protocol.client.AppProtocolCommunicator.onData(AppProtocolCommunicator.java:78)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.android.appremote.internal.RemoteServiceIo.handleMessage(RemoteServiceIo.java:113)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.android.appremote.internal.RemoteServiceIo.access[=11=]0(RemoteServiceIo.java:47)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.android.appremote.internal.RemoteServiceIo$IncomingHandler.handleMessage(RemoteServiceIo.java:91)
D/SPOTIFY_APP_REMOTE(24936):    at android.os.Handler.dispatchMessage(Handler.java:106)
D/SPOTIFY_APP_REMOTE(24936):    at android.os.Looper.loop(Looper.java:214)
D/SPOTIFY_APP_REMOTE(24936):    at android.app.ActivityThread.main(ActivityThread.java:7073)
D/SPOTIFY_APP_REMOTE(24936):    at java.lang.reflect.Method.invoke(Native Method)
D/SPOTIFY_APP_REMOTE(24936):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
D/SPOTIFY_APP_REMOTE(24936):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
D/SPOTIFY_APP_REMOTE(24936): Stop remote client
E/SpotifyAppRemoteActivity(24936): AuthenticationFailedException
E/SpotifyAppRemoteActivity(24936): com.spotify.android.appremote.api.error.AuthenticationFailedException: {"message":"com.spotify.mobile.android.spotlets.appprotocol.model.AppProtocol$Message"}
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.api.LocalConnector.asAppRemoteException(LocalConnector.java:131)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.api.LocalConnector.access[=11=]0(LocalConnector.java:35)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.api.LocalConnector.onConnectionFailed(LocalConnector.java:111)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.internal.SdkRemoteClientConnector$ConnectionTask.onPostExecute(SdkRemoteClientConnector.java:142)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.internal.SdkRemoteClientConnector$ConnectionTask.onPostExecute(SdkRemoteClientConnector.java:75)
E/SpotifyAppRemoteActivity(24936):  at android.os.AsyncTask.finish(AsyncTask.java:695)
E/SpotifyAppRemoteActivity(24936):  at android.os.AsyncTask.access0(AsyncTask.java:180)
E/SpotifyAppRemoteActivity(24936):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
E/SpotifyAppRemoteActivity(24936):  at android.os.Handler.dispatchMessage(Handler.java:106)
E/SpotifyAppRemoteActivity(24936):  at android.os.Looper.loop(Looper.java:214)
E/SpotifyAppRemoteActivity(24936):  at android.app.ActivityThread.main(ActivityThread.java:7073)
E/SpotifyAppRemoteActivity(24936):  at java.lang.reflect.Method.invoke(Native Method)
E/SpotifyAppRemoteActivity(24936):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/SpotifyAppRemoteActivity(24936):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
E/SpotifyAppRemoteActivity(24936): Caused by: com.spotify.protocol.client.error.RemoteClientException: {"message":"com.spotify.mobile.android.spotlets.appprotocol.model.AppProtocol$Message"}
E/SpotifyAppRemoteActivity(24936):  at com.spotify.protocol.client.RemoteWampClient.getRemoteClientException(RemoteWampClient.java:139)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.protocol.client.RemoteWampClient.access0(RemoteWampClient.java:16)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.protocol.client.RemoteWampClient.onAbort(RemoteWampClient.java:44)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.protocol.client.WampRouterImpl.routeAbort(WampRouterImpl.java:100)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.protocol.client.WampRouterImpl.route(WampRouterImpl.java:26)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.protocol.client.AppProtocolCommunicator.onData(AppProtocolCommunicator.java:78)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.internal.RemoteServiceIo.handleMessage(RemoteServiceIo.java:113)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.internal.RemoteServiceIo.access[=11=]0(RemoteServiceIo.java:47)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.internal.RemoteServiceIo$IncomingHandler.handleMessage(RemoteServiceIo.java:91)
E/SpotifyAppRemoteActivity(24936):  ... 6 more

我遇到了类似的问题,here了解更多详情。

您需要注册您的应用程序才能使用 Spotify 仪表板。转到 spotify 仪表板并编辑您的项目。

如官方文档中所述。

You also should add your package name and app fingerprint as they’re used to verify the identity of your application.

您可以按照 documentation 中的说明生成/获取您的指纹。

MAC/Linux

keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Windows

keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

有了指纹后,需要注册spotify dashboard,应该没问题。