Extract oauth handling into `SpotifyOauth`