我遇到了这个库,以获取当前播放曲目的名称。因此,我认为使用客户端凭据流会给我无效的用户名。在这里进行了搜索,发现您不应该使用它们。因此,我继续进行如下编写的“授权代码流”。
public static void main(String... args) {
TrackSong trackSong = new TrackSong();
String code = getAuthorizationCode(trackSong.api);
Logger.getAnonymousLogger().info("Authorization URL: "+code);
try {
AuthorizationCodeCredentials authorizationCodeCredentials = trackSong.api.authorizationCode(code).build().execute();
trackSong.api.setAccessToken(authorizationCodeCredentials.getAccessToken());
trackSong.api.setRefreshToken(authorizationCodeCredentials.getRefreshToken());
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(trackSong::writeSong, 0, 10, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getAuthorizationCode(SpotifyApi api) {
return api.authorizationCodeUri().state("x4xkmn9pu3j6ukrs8n")
.scope("user-read-currently-playing,user-read-playback-state")
.show_dialog(true)
.build()
.execute()
.toString();
}
实际的SpotifyApi对象为
new SpotifyApi.Builder().setClientId("2e411043bc7f44428f5ce91c328ac6b8")
.setClientSecret(SPOTIFY_SECRET)
.setRedirectUri(SpotifyHttpManager.makeUri("http://localhost:8888/"))
.build()
我希望它与程序的其余部分一起继续,但是相反,它只是引发了BadRequestException。我不怎么尝试,因为我不知道要更改什么,但是我尝试了不同的方法来获取授权码。尽管我确实相信这是由于我没有处理回调。