如何修复“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”的主要内容,如果未能解决你的问题,请参考以下文章