This gem provides a simple way to authenticate to Spotify Web API using OmniAuth with OAuth2.
Add this line to your application's Gemfile:
gem 'omniauth-spotify'
And then execute:
$ bundle
Or install it yourself as:
$ gem install omniauth-spotify
You'll need to register an app on Spotify, you can do this here - https://developer.spotify.com/my-applications/#!/
Usage of the gem is very similar to other OmniAuth strategies.
You'll need to add your app credentials to config/initializers/omniauth.rb:
Rails.application.config.middleware.use OmniAuth::Builder do provider :spotify, 'app_id', 'app_secret', scope: 'playlist-read-private user-read-private user-read-email' end
Please replace the example scope provided with your own.
Read more about scopes here: https://developer.spotify.com/web-api/using-scopes/
Or with Devise in config/initializers/devise.rb:
config.omniauth :spotify, 'app_id', 'app_secret', scope: 'playlist-read-private user-read-private user-read-email'
Here's an example auth hash, available in request.env['omniauth.auth']:
Some of this fields depend on what scopes you ask, namely
user-read-emailaffects the presence of theemailfielduser-read-privateaffects the value ofname(if the scope is missing it will reflectusername) and the presence ofimage
{ :provider => "spotify", :uid => "1111111111", :info => { :name => "Claudio Poli", :nickname => 'SomeName', :email => "claudio@icorete.ch", :urls => {:spotify => "https://open.spotify.com/user/1111111111"}, :image => 'https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfp1/t1.0-1/s320x320/301234_1962753760624_625151598_n.jpg' }, :credentials => { :token => "xxxx", :refresh_token => "xxxx", :expires_at => 1403021232, :expires => true }, :extra => { :raw_info => { :country => "IT", :display_name => "Claudio Poli", :email => "claudio@icorete.ch", :external_urls => { :spotify => "https://open.spotify.com/user/1111111111" }, :href => "https://api.spotify.com/v1/users/1111111111", :id => "1111111111", :images => [ { "height" => nil, "url" => "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfp1/t1.0-1/s320x320/301234_1962753760624_625151598_n.jpg", "width" => nil } ], :product => "open", :type => "user", :uri => "spotify:user:1111111111" } } }
This gem is brought to you by the AudioBox guys. Enjoy!
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request