如何修复“com.spotify.error.client_authentication_failed”

Posted

技术标签:

【中文标题】如何修复“com.spotify.error.client_authentication_failed”【英文标题】:How to fix '"com.spotify.error.client_authentication_failed" 【发布时间】:2020-01-13 07:03:06 【问题描述】:

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

有人知道怎么解决吗?

我使用的是 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.access$200(RemoteWampClient.java:16)
D/SPOTIFY_APP_REMOTE(24936):    at com.spotify.protocol.client.RemoteWampClient$1.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$000(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$000(LocalConnector.java:35)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.api.LocalConnector$1.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.access$600(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.access$200(RemoteWampClient.java:16)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.protocol.client.RemoteWampClient$1.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$000(RemoteServiceIo.java:47)
E/SpotifyAppRemoteActivity(24936):  at com.spotify.android.appremote.internal.RemoteServiceIo$IncomingHandler.handleMessage(RemoteServiceIo.java:91)
E/SpotifyAppRemoteActivity(24936):  ... 6 more

【问题讨论】:

【参考方案1】:

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

您需要注册您的应用程序以发现仪表板。去 spotify 仪表板并编辑您的项目。

正如官方文档中提到的。

您还应该添加您的包名称和应用指纹,因为它们用于验证您的应用的身份。

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

MAC/Linux

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

窗户

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

当你有了指纹后,你需要注册到 spotify 仪表板,应该没问题。

【讨论】:

以上是关于如何修复“com.spotify.error.client_authentication_failed”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞

如何在DOS环境下修复系统