Just posting this in case anyone were to stumble on the same problem as me: Requesting an authorization flow from a bash shell and figured out that I may not add quotes (in my case single quotes).
My original (failing) command:
open "https://accounts.spotify.com/authorize?response_type=code&client_id=$SPOTIFY_CLIENT_ID&redirect_uri=$SPOTIFY_REDIRECT_URI&state=$TMP_SFY_STATE&scope='playlist-modify-public'"
My new (working) command:
open "https://accounts.spotify.com/authorize?response_type=code&client_id=d3e985209060474e99247de040967b54&redirect_uri=https://no_spotify_uri&state=$TMP_SFY_STATE&scope=playlist-modify-public"
The differences are the single quotes around my scope value.