概要
タイトルのとおりです
UI を構築するわけではないので OAuth を使ったログイン画面などは作成しません
今回は自身のアカウントの情報を取得してみたいと思います
環境
- macOS 10.13.5
- patreon-ruby 0.5.0
- Ruby 2.5.1p57
クライアントアプリの登録
https://www.patreon.com/portal/registration/register-clients から登録しましょう
アプリの必要な情報を入力します
アイコンの URL プライバシーポリシーの URL、規約の URL は必須ではありません
以下のように作成できれば OK です
今回は「Creator's Access Token
」を使います
Patrons を取得するサンプルコード
Patrons は要するに支援してくれている方々です
require 'patreon'
require 'cgi'
access_token = 'creators_access_token'
api_client = Patreon::API.new(access_token)
campaign_response = api_client.fetch_campaign()
campaign_id = campaign_response.data[0].id
all_pledges = []
cursor = nil
while true do
page_response = api_client.fetch_page_of_pledges(campaign_id, { :count => 25, :cursor => cursor })
all_pledges.concat page_response.data
next_page_link = page_response.links[page_response.data]['next']
if next_page_link
parsed_query = CGI::parse(next_page_link)
cursor = parsed_query['page[cursor]'][0]
else
break
end
end
puts all_pledges.map{ |pledge| { full_name: pledge.patron.full_name, amount_cents: pledge.amount_cents } }
Creator's Access Token
を使って API クライアントを作成します
まず fetch_campaign()
で campaign_id
を取得します
campaign_id
はいわゆるユーザ ID みたいなものです
次にその ID を元に fetch_page_of_pledges()
をコールします
ページネートしながら Patrons を取得することができます
次のページは page_response.links[page_response.data]['next']
で取得しています
これが nil であれば終了してそうでなければ次のページの URL をパースして cursol 情報を取得します
あとは最後に保存した配列の情報 (all_pledges
) を map で必要なフィールドだけ取得して表示しています
map しているだけなのでそのまま puts しても OK です
おまけ
ちなみに今回の API であれば curl で簡単に呼べます
curl -XGET \
-H 'Authorization: Bearer [creators_access_token]' \
'https://www.patreon.com/api/oauth2/api/campaigns/[campaign_id]/pledges'
最後に
Patreon の REST API を Ruby でコールしてみました
今回はアプリを作成したユーザ自身の情報をしか取得しなかったのでログイン画面を作成しませんでした
もしログインしたユーザの情報を取得したい場合はログイン画面を作成して OAuth 認証してトークンをちゃんと取得して API をコールしてください
Creator's Access Token は 1 ヶ月くらいすると自動的に expired になってしまうのでリフレッシュが必要です
返信削除