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-email
affects the presence of theemail
fielduser-read-private
affects 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