Caution
This package is deprecated. It uses Patreon API v1, which is deprecated and no longer maintained. This SDK will not receive further updates.
We recommend migrating to the Patreon API v2 by integrating directly using your own HTTP client. See the API documentation and v1 to v2 migration overview for details.
Interact with the Patreon API via OAuth.
Get the gem from RubyGems
Visit the OAuth Documentation Page while logged in as a Patreon creator to register your client.
This will provide you with a client_id and a client_secret.
Step 2. Use this library
e.g. the example Sinatra app in this repo or the Rails route example below.
require 'patreon'
class OAuthController < ApplicationController
def redirect
oauth_client = Patreon::OAuth.new(client_id, client_secret)
tokens = oauth_client.get_tokens(params[:code], redirect_uri)
access_token = tokens['access_token']
api_client = Patreon::API.new(access_token)
user_response = api_client.fetch_user()
# user_response uses [json-api-vanilla](https://github.com/trainline/json-api-vanilla) for easy usage
@user = user_response.data
# you can list all attributes and relationships with (@user.methods - Object.methods)
@pledge = @user.pledges[0]
# just like with @user, you can list all pledge attributes and relationships with (@pledge.methods - Object.methods)
@pledge_amount = @pledge.amount_cents
end
endPatreon::API instances have four methods:
fetch_user(includes=nil, fields=nil)fetch_campaign(includes=nil, fields=nil)fetch_campaign_and_patrons(includes=nil, fields=nil)fetch_page_of_pledges(campaign_id, page_size, cursor=nil, includes=nil, fields=nil)
The includes and fields arguments to these methods specify
the related resources
and the resource attributes
you want returned by our API, as per the JSON:API specification.
The lists of valid includes and fields arguments are provided on Patreon::Schemas.
For instance, if you wanted to request the total amount a patron has ever paid to your campaign,
which is not included by default, you could do:
api_client = Patreon::API.new(patron_access_token)
patron_response = api_client.fetch_user(nil, {
'pledge': Patreon::Schemas::Pledge.default_attributes + [Patreon::Schemas::Pledge::Attributes::TOTAL_HISTORICAL_AMOUNT_CENTS]
})