I have credentials through a modified version of hrkfdn/ncspot#537 that uses a newly created client id and client secret (CLIENT_ID from here on out). These credentials authenticate:
[2021-05-24][14:45:53] [librespot_core::session] [INFO] Authenticated as "##########" !
[2021-05-24][14:45:53] [librespot_playback::audio_backend::pulseaudio] [INFO] Using PulseAudio sink with format: S16
[2021-05-24][14:45:53] [librespot_core::session] [INFO] Country: "DE"
However librespot is unable to get a token using these credentials:
[2021-05-24][14:45:53] [librespot_core::mercury] [WARN] error 403 for uri hm://keymaster/token/authenticated?client_id=CLIENT_ID&scope=user-read-private,playlist-read-private,playlist-read-collaborative,playlist-modify-public,playlist-modify-private,user-follow-modify,user-follow-read,user-library-read,user-library-modify,user-top-read,user-read-recently-played
I have a hacked up version of examples/get_token.rs that works off of these credentials instead of whats passed on the command line (see medwards@fed29f4).
This works for the streaming scope:
~/forks/librespot$ cargo run --package librespot --example get_token -- /home/medwards/.cache/ncspot/librespot CLIENT_ID streaming
Finished dev [unoptimized + debuginfo] target(s) in 0.06s
Running `target/debug/examples/get_token /home/medwards/.cache/ncspot/librespot CLIENT_ID streaming`
Connecting..
Token: Token {
access_token: "AN_ACCESS_TOKEN",
expires_in: 3600,
token_type: "Bearer",
scope: [
"streaming",
],
}
For any other scope or combination of scopes I get MecuryError.
~/forks/librespot$ cargo run --package librespot --example get_token -- /home/medwards/.cache/ncspot/librespot CLIENT_ID playlist-modify
Finished dev [unoptimized + debuginfo] target(s) in 0.06s
Running `target/debug/examples/get_token /home/medwards/.cache/ncspot/librespot CLIENT_ID playlist-modify`
Connecting..
Got error: MercuryError
~/forks/librespot$ cargo run --package librespot --example get_token -- /home/medwards/.cache/ncspot/librespot CLIENT_ID playlist-read
Finished dev [unoptimized + debuginfo] target(s) in 0.06s
Running `target/debug/examples/get_token /home/medwards/.cache/ncspot/librespot CLIENT_ID playlist-read`
Connecting..
Got error: MercuryError
I originally requested the following scopes when going through the oauth2 flow so I expect these to work (and mysteriously streaming does):
"app-remote-control",
"playlist-modify",
"playlist-modify-private",
"playlist-modify-public",
"playlist-read",
"playlist-read-collaborative",
"playlist-read-private",
"streaming",
"user-follow-modify",
"user-follow-read",
"user-library-modify",
"user-library-read",
"user-modify",
"user-read-private",
"user-read-recently-played",
"user-top-read",
I have credentials through a modified version of hrkfdn/ncspot#537 that uses a newly created client id and client secret (
CLIENT_IDfrom here on out). These credentials authenticate:However librespot is unable to get a token using these credentials:
I have a hacked up version of
examples/get_token.rsthat works off of these credentials instead of whats passed on the command line (see medwards@fed29f4).This works for the
streamingscope:For any other scope or combination of scopes I get
MecuryError.I originally requested the following scopes when going through the oauth2 flow so I expect these to work (and mysteriously
streamingdoes):