The README at says
https://github.com/Burgestrand/Hallon/ "even though you can still do a few things without logging in"
What things?
Without logging in, I tried to load a playlist but got a weird error (nothing about not being logged in)
Hallon/lib/hallon/base.rb:108:in `to_pointer': "spotify:user:theusername:playlist:theplaylisthash" could not be converted to a spotify Spotify::Playlist pointer (ArgumentError)
I logged in and it worked with out error.
I've heard (from #spotify @ freenode) that any API call to libspotify requires you to login. Maybe the README should make that clear? (It that's really the case.)
Before logging in you’re able to create links, and from links you’re also able to create objects from those links (e.g. tracks, artists). However, you won’t be able to load those objects without logging in, so while true, it’s not very useful. I’ll remove the note from the README.
(I don't like the fact that you need to log in with your username/password (what's the API key for?), but that's another topic.)
I didn’t create libspotify, so I can’t help you with your username/password woes. However, I can explain how the alternative works.
libspotify has a session callback named `credentials_blob_updated` [1], that’ll be called some time after logging in properly. As a parameter it’ll receive a string of weird characters that is safe to store on disk instead of saving the user’s password. When logging in you’ll be able to supply the credentials blob string in place of the password. Session#login [2] has an example on what the call would look like, and Observable::Session#credentials_blob_updated [3] has an example on what it would look like listening to the event.