bih/spotify-ruby
A modern, opinionated and unofficial Ruby SDK for the Spotify Web API to help developers all over the world build amazing music things with Spotify. Check out the full docs here.
This is a work in progress. Currently in pre-alpha.
Installation
Add this line to your application's Gemfile:
gem 'spotify-ruby'
And then execute:
$ bundle
Or install it yourself as:
$ gem install spotify-ruby
Setup
Configure with your client credentials and redirect URL. Get it for free here.
require "spotify"
@auth = Spotify::Auth.new({
client_id: ENV["SPOTIFY_CLIENT_ID"],
client_secret: ENV["SPOTIFY_CLIENT_SECRET"],
redirect_uri: ENV["SPOTIFY_REDIRECT_URI"]
})
Authentication
With our @auth
instance, we have access to multiple forms of authentication. Below are our ones that we make available through the Spotify Platform: Authorization Code, Implicit Grant and Client Credentials. Learn more here.
Authorization Code
Recommended. Generate the URL for the user to grant permissions for your application:
@auth.(response_type: "code")
Once they return back to your application with a code
:
@access_token = @auth.auth_code.get_token(params[:code])
You can save their information in the database under access_token
, expires_in
and refresh_token
@sdk = Spotify::SDK.new(@access_token)
@sdk.to_hash # => { access_token: "...", expires_in: 1234567890, refresh_token: "..." }
And you can also re-instantiate a SDK instance again later:
@sdk = Spotify::SDK.new({
access_token: "[insert access_token]",
expires_in: "[insert expires_in]",
refresh_token: "[insert refresh_token]"
})
And when their access token expires, you can just run refresh!
:
@access_token = @access_token.refresh!
Implicit Grant
@auth.(response_type: "token")
Once they return back to your application with a token
:
@sdk = Spotify::SDK.new(params[:token])
Client Credentials
Generate an access token based from your client credentials. Note this has limited access.
@access_token = @auth.client_credentials.get_token
Usage
TODO: Write more detailed usage instructions here. Spotify API endpoint coverage can be found in COVERAGE.md
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/bih/spotify-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
License
The gem is available as open source under the terms of the MIT License.
Code of Conduct
Everyone interacting in the spotify-ruby
project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.