2017-04-08 4 views
0

Ich arbeite an einer Android-App, die die Spotify-API implementiert, damit die Benutzer Musik hören können. Ich habe den Player, den Spotify für Android-Geräte erstellt hat, konfiguriert, aber in Bezug auf seine Funktionalität ist er unglaublich eingeschränkt. Daher musste ich die Spotify-Web-API aufrufen, um erweiterte Funktionen auszuführen.Spotify Android - Autorisierte Webanfragen erstellen

Ich habe einen Fehler beim Versuch, eine Liste der eigenen Wiedergabelisten des Benutzers zu erhalten. Ich mache eine Anfrage mit:

URL url = new URL("https://api.spotify.com/v1/me/playlists"); 
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

Aber anstatt diesen Befehl durchlaufen, wie es für die anderen Web-API-Anfragen macht die ich gemacht habe, wirft sie den Fehler:

java.io.FileNotFoundException: https://api.spotify.com/v1/me/playlists 
                       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:242) 
                       at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 
                       at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25) 
                       at com.tmacstudios.spotifyvoice.WebWrapper$override.searchUserPlaylist(WebWrapper.java:257) 
                       at com.tmacstudios.spotifyvoice.WebWrapper$override.access$dispatch(WebWrapper.java) 
                       at com.tmacstudios.spotifyvoice.WebWrapper.searchUserPlaylist(WebWrapper.java:0) 
                       at com.tmacstudios.spotifyvoice.MainActivity$6.run(MainActivity.java:382) 
                       at java.lang.Thread.run(Thread.java:818) 

I‘ Ich bin mir nicht ganz sicher, warum ich diesen Fehler bekomme, aber ich denke, dass es möglicherweise damit zu tun hat, dass ich nicht die erforderliche Berechtigung habe, um diese Anfrage zu stellen. Kann mir bitte jemand helfen, dieses Problem zu lösen?

Antwort

1

Nachdem ich die Dokumentation etwas genauer studiert hatte, war ich in der Lage, einen Weg zu finden, mein Problem zu lösen. Ich habe den Fehler tatsächlich erhalten, da ich nicht die richtige Autorisierung verwendet habe.

Sie können die Berechtigungszeichen in onActivityResult mit diesem Code erhalten:

AuthenticationResponse response = AuthenticationClient.getResponse(resultCode, intent); 
      if (response.getType() == AuthenticationResponse.Type.TOKEN) { 

       authToken = response.getAccessToken(); 
       Log.e("MainActivity","Auth Token: "+authToken.toString()); 
... 

Dann, wenn die URL-Anforderung zu machen, in dem Autorisierungs-Token als Header nur passieren.

Beachten Sie außerdem, dass Sie die Berechtigungen, die Sie verwenden, als Bereiche aktiviert haben müssen, wenn Sie die Autorisierungsanforderung zunächst erstellen.