-
Notifications
You must be signed in to change notification settings - Fork 456
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Spotify Password Authentication Deprecated #1274
Comments
Is there anything to do in the meantime? Or is it just to wait until the changes get merged? |
Try to Play with zeroconf - without username and password. -- and wait for Librespot to solve the problem. /usr/bin/librespot --name MyLibrespotSpeaker --bitrate 320 --backend pipe --cache /var/cache/librespot --initial-volume 100 --verbose [2024-08-19T12:18:50Z INFO librespot] librespot 0.5.0-dev 299b7de (Built on 2024-08-14, Build ID: OsvPSZhj, Profile: release) Snapserver source sample ( in /etc/snapserver.conf ): notes:
|
I just wanted to report that I am a snapcast user and I had my Spotify account disabled due to password-based credentials being deprecated by what I suppose is either my Home Assistant snapcast integration or snapcast server hammering spotify trying to log in . I had the same
|
@bai-yi-bai - Thanks for sharing your experience. I am also using Home Assistant to initiate playback on Snapcast. If you remove the credentials from the Snapcast config, then won't your Snapcast Spotify Connect source get unlinked from your Spotify account after being inactive for some time? How are you able to keep Snapcast in the list of Spotify Connect sources via Home Assistant? |
I think he meant like he removed those portions and made his peace that Spotify is trash and that we should all look into playing music locally and not through their garbage API |
The Home Assistant Spotify API uses the developer credentials (client ID/client secret) set up in the Spotify developer portal. I don't think it ever used username and password credentials. I simply had to "cycle" it to re-establish the link.
LOL - Yes, my first thought was to see if Snapcast supported any other streaming services, but for me the recommendation algorithm has been a great way to discover new music and new genres. |
Yes... The recommendation algorithm... It's the only thing keeping that ship afloat |
I can also confirm that in the last weeks my Spotify Password was reset due to suspicious activity and therefor I also was not able to login with librespot also with changed credentials. |
its not. the current Spotify Android client definitely still support email/password, Ive been testing it all day. in fact my code from last month still works as is, if you add a user-agent |
Do you mean with Snapcast / librespot? |
I have an implementation here if it helps |
I built an OS image based on Snapcast (just so I could give "whole-house audio" systems to non-technical people for birthdays, holidays, etc.). What worked for me was to use the librespot build from dtcooper's Raspotify (https://dtcooper.github.io/raspotify/). The OS image I built is Debian-based, so I:
Then zeroconf magic takes care of the rest: I sign in to Spotify on another device (Spotify client or web browser) and it sees DESIRED_SPOTIFY_DEVICE_NAME as an available device for playback. |
Wait so zeroconf actually works? Why tf are we busting our nuts trying to configure credentials.json and whatnot as per: librespot-org/librespot#1308 (comment) |
In my case, it's helpful because I use my home autoomation to programmatically initiate playbacks on my Snapcast source, without using the Spotify app. Since ZeroConf logins expire after some period of inactivity (~10 min I think?), it's helpful to just permanently associate the Snapcast source with my Spotify account so that it never disappears from my list of Spotify Connect devices. |
I used librespot-auth to generate my |
Because I also want to:
If you only want to use spotify "locally" on the local LAN/Wifi, then you do not need to pass any credentials |
Yeah, this only handles playback, not control. For control, there are a bunch of projects out there (I used to use https://gist.github.com/wandernauta/6800547) - but then you're back to having to deal with credentials again. Basically, exactly what @fraintt said. Re: the ZeroConf login expiration, thanks - I wasn't aware of that. I haven't had any issues running for weeks at a time, but I also haven't needed to have Spotify reconnect to devices when I'm no longer on the same network as them. |
@fraintt oh riiight, I need that functionality as well, so good thing I got it working then. |
Hi, I did the same, I have credentials.json but for me it still does not work.. I do not see the Spotify device when not connected to the local LAN. I also do not see anything in the Logs. At start I saw that there were permissions issues accessing the Path, which I fixed by changing ownership. How does your stream link/path look like? Have you specified any cache? Also, I´m using raspotify, as librespot seems to be abandoned (last release 2 years ago. (i know, raspotify is also not u2date but I had better experience with raspotify) |
Hi @fraintt
|
I did exactly the same, but I cannot see the Speaker when I´m not on a local LAN. |
Both directory and |
@fraintt I had to build librespot directly from source because it didn't work for me otherwise. I am running The |
Ok, great news. I failed at building librespot from source, but I´m using raspotify. Thanks for the help. |
I was having this issue - posted steps here to correctly build (if you are like me and have little knowledge of how these things work) so we can have working librespot. Changed authentication also breaks the spotify connect keep-alive mechanism and even if you get auth working, it will drop every 5-10m until you incorporate the fix mentioned here. |
Librespot v0.6 should have connection and auth issues solved, upgrade if you're experiencing issues. It's been a turbulent few months but Librespot now provides multiple way to login, these are documented in the librespot wiki. Ideally a project like this would pick one as the standard method it uses,.just to simplify things. |
I will PR these into install librespotIf you choose to install librespot locally onto your host by using cargo, then you might find these instructions help you get configured. You will need to have the rust compiler and cargo package manager installed already. For other cases such as running librespot within a docker container, you should refer to the main librespot project documentation. # prepare the librespot dependencies for your own OS
# this example is for debian bookworm and librespot 0.6.0
sudo apt install -y build-essential libasound2-dev cmake libclang-dev
# install and build the latest version of librespot from crates
cargo install librespot
# that command may take some time to download and compile 260 units
# finally, place the binary you just compiled into a common system path
sudo cp ~/.cargo/bin/librespot /usr/local/bin/ Authenticate your Spotify accountSpotify has deprecated password login, so we suggest you use the new Headless OAuth to authenticate your Spotify account. sudo -u snapserver librespot --cache /var/lib/snapserver --enable-oauth --oauth-port 0
Configure your snapserver file
example config, which no longer requires ANY authentication because it's now baked in source = spotify:///librespot?name=Spotify&devicename=MyLibreSpot&bitrate=320&volume=35 |
I think this is good except what about changing ownership of /var/lib/snapserver first and then running |
This doesn't work for me, I have to encode the forward slashes:
just FYI |
Thanks @uSpike I'll make the point that if someone chooses a location to store the credentials that is not the execute location (e.g. |
So in running in docker, I don't get a "browse to" output. All I get is its version:
TMK, 0.6.0 is the latest build; how are you getting the 'browse to' output you are referencing? |
That's a very interesting question @neekz0r but perhaps one you might find best addressed over on the librespot project itself. Your issue will be not merely how to get the console output from docker but also how to persist the credentials. I'd imagine that a sensible way would be to run the authentication in a folder on the docker host, so that the files persist, and then mount that folder as a volume into the container so that it is available to the librespot executable when you docker run it. As I say, you are most likely to find concrete examples of Headless OAuth using librespot in docker on the librespot's own project docs, wiki or issues. But do feel free to post here any examples or links you find in case others also look. Good luck |
I was more asking you to clarify the steps above since I can't duplicate what you outlined -- I don't see a "browse to" anywhere. I'm not sure if that is due to it being in docker, or if something else is going on. If the response is "not our problem, that's a librespot problem", fair enough! :-) I latched onto your response because the thread that was talking about this issue on librespot was closed because it turned into a flame war. I would say, then, that updating the readme is "see librespot for how to authenticate" rather than step-by-step instructions is a better recourse. |
There are multiple ways to auth librespot so picking one here, with step by step instructions is a good idea, in my opinion. I can't explain why your console output only contains a single line, that makes no sense. My guess is it's somehow due to using Docker. Try without docker. |
@neekz0r how did you get the shell to your docker container? My only trouble using docker was that librespot tries to identify an audio device and at I needed to pass through /dev/snd as device. Even with this problem I describe, librespot was outputting much more than what you see, including the error message indicating an audio device wasn't found. |
thanks @kingosticks I have tested and updated the comments above with your suggestion too |
Standard way; So to clarify, when you ran the above command in docker it did give you a browse to output somewhere? Could you tell me your version, and perchance, what method you used to install librespot? edit: I also ran it by overriding the entrypoint to |
@neekz0r this is my Dockerfile, I get a shell same as you once a container is created and the command I ran was the same (different cache location, but shouldn't matter)
|
The above dockerfile worked for me, but strangely I've created a bug over at librecast, but I wanted to thank you @curiousercreative -- that was really helpful. |
Describe the bug
Some users have been getting
[Error] (librespot) could not initialize spirc: Permission denied { Login failed with reason: Bad credentials }
in the past weeks. It seems that Spotify is deprecating password authentication as notified to Librespot.It seems that snapcast needs to implement the new token based authentication mechanism as soon as this change in librespot gets merged.
Steps to Reproduce
Environment details
The text was updated successfully, but these errors were encountered: