LoginSignup
34
33

More than 5 years have passed since last update.

Rubyでfeedly APIにアクセスする

Last updated at Posted at 2014-10-07

先日に開催された西脇.rb&神戸.rbのプログラミング合宿での自分の課題でfeedly APIを使用したのでメモとして残しておきます。

アクセストークンの取得

これについては以下のQiitaの記事を参考にさせて頂きました。
- Feedly APIメモ
- The feedly Cloud APIを読んでみる

記事を参考にやっていくと最終的にアクセストークンは以下のような形式で取得できました。

{
  "token_type": "Bearer",
  "expires_in": 604799,
  "access_token": "***",
  "refresh_token": "***",
  "plan": "standard",
  "id": "user_id",
  "provider": "Twitter"
}

※ 2015/10/13 追記
アクセストークンの取得が簡単になってブラウザだけで取得できるようになっていました。

補足として、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

client.rb
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で使う場合は

以下のように初期化スクリプトを配置しておけば、

config/initializers/feedlr.rb
Feedlr.configure do |config|
  config.oauth_access_token = ENV['FEEDLY_ACCESS_TOKEN']
  config.sandbox = false
  config.logger = Logger.new(STDOUT)
end

これだけでインスタンス化できます。

client.rb
client = Feedlr::Client.new

まとめ

RSSリーダーを作ろうと考えたことはないのですが、どのような構造でデータを持つべきかなどについても参考になりました。

34
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
33