先日に開催された西脇.rb&神戸.rbのプログラミング合宿での自分の課題でfeedly APIを使用したのでメモとして残しておきます。
アクセストークンの取得
これについては以下のQiitaの記事を参考にさせて頂きました。
記事を参考にやっていくと最終的にアクセストークンは以下のような形式で取得できました。
{
"token_type": "Bearer",
"expires_in": 604799,
"access_token": "***",
"refresh_token": "***",
"plan": "standard",
"id": "user_id",
"provider": "Twitter"
}
※ 2015/10/13 追記
アクセストークンの取得が簡単になってブラウザだけで取得できるようになっていました。
- Feedly APIを使用するためのアクセストークンがかなり簡単に取得できるようになっていた
- Generating developer access tokens (beta) : Feedly Cloud - Googleグループ
補足として、OAuthプロバイダがTwitterだと、アクセストークンの取得URLはTwitterのDMで送られてきます。
feedly APIのほぼ全機能をサポートするRubyラッパー feedlr
BestGemsなどで調べると同じ目的のアクティブなGemが3つ見つかるのですが、テストもあってAPIカバー率が高かったのがfeedlrという、なぜかランクが3位のGemでした。
使い方
RSSリーダーいう性質上、いろんなID(userId,streamId, entryId, originId, categoryId, tagId)が出てきて、パラメータに渡す時、最初はどのIDを指してるのか少し戸惑いましたが、一度わかってしまえば簡単です。
詳しくはAPIドキュメントを参考。
The feedly Cloud API
require 'feedlr'
client = Feedlr::Client.new(oauth_access_token: 'access_token')
# ユーザープロフィールを取得する
profile = client.user_profile
# カテゴリーの一覧を取得する
client.user_categories
# 登録サイト一覧を取得する
client.user_subscriptions
# カテゴリ指定なしのID
category_id = "user/#{profile.id}/category/global.all"
# 指定したカテゴリの最新のエントリーのID一覧(デフォルトで20件)を取得する
entry_ids = client.stream_entries_ids(category_id)['ids']
# 指定したID(複数)のエントリーを取得する
entries = client.user_entries entry_ids
# 指定したカテゴリのエントリー一覧を取得する
stream = client.stream_entries_contents(category_id).items
Railsで使う場合は
以下のように初期化スクリプトを配置しておけば、
Feedlr.configure do |config|
config.oauth_access_token = ENV['FEEDLY_ACCESS_TOKEN']
config.sandbox = false
config.logger = Logger.new(STDOUT)
end
これだけでインスタンス化できます。
client = Feedlr::Client.new
まとめ
RSSリーダーを作ろうと考えたことはないのですが、どのような構造でデータを持つべきかなどについても参考になりました。