25
【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回 Ticklecode Yoshinori Kobayashi 1 Instagram Ruby Gem と Instagram API から学んだことまとめ Instagram Ruby Gem でユーザーの最近の投稿を取得する

Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

Embed Size (px)

Citation preview

Page 1: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

Ticklecode

Yoshinori Kobayashi 1

Instagram Ruby Gem と Instagram API から学んだことまとめ

Instagram Ruby Gem でユーザーの最近の投稿を取得する

Page 2: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

2

生まれは 奈良県 です

小林由憲(こばやしよしのり)

Twitter:

TickleCode ブログ:

@yoshiii514

Page 3: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

もくもく会(自主勉強会) を複数の運営メンバーや アドバイザーの方々と ともに、定期開催しています。

勉強会を開催しています)^o^(

3

【CoEdo.rb】

Ruby / Ruby on Rails ビギナーズ勉強会

Swiftビギナーズ勉強会

WordPressもくもく 勉強会

http://wp-moku.doorkeeper.jp/

https://swift-beginners.doorkeeper.jp/

https://coedo-rails.doorkeeper.jp/

自己紹介

Page 4: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

4

Instagram Ruby Gem を使えるようにする

Page 6: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

6

Instagram Ruby Gem を使えるようにする。

アプリケーション登録をして、CLIENT ID(クライアントID), CLIENT SECRET(クライアントシークレット)を取得する。

Register a Client Instagram Developer Documentation

Page 7: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

7

取得したCLIENT ID, CLIENT SECRETを記述する。

require "instagram"

Instagram.configure do |config|

config.client_id = "INSTAGRAM_CLIENT_ID"

config.client_secret = "INSTAGRAM_CLIENT_SECRET"

end

Instagram Ruby Gem を使えるようにする。

/config/initializers/instagram.rb

Page 8: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

8

ユーザーの最近の投稿を取得する

Page 9: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

9

home_controller.rb

結果、user_recent_media メソッドで取得できる。

class HomeController < ApplicationController

def index

@user = Instagram.user_recent_media(12413015,{:count

=> 20})

end

end

index.html.erb

<% @user.each do |p| %>

<%= image_tag(p.images.low_resolution.url,:class => "img-

rounded") %>

<% end %>

ユーザーの最近の投稿を取得する

Page 10: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

10

自分の最近の投稿が取得できている。

ユーザーの最近の投稿を取得する

Railsの勉強になったので、ここまでの手順をまとめてみる。

Page 11: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

11

ユーザーの最近の投稿を取得する

ユーザーの直近の情報を取得したい。

Qiita の記事から user_recent_media がそれっぽい!とわかる。

パラメタとかもう少し、使い方を知りたい。

Page 13: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

13

GET /users/user-id/media/recent

https://api.instagram.com/v1/users/{user-id}/media/recent/?access_token=ACCESS-TOKEN

ユーザーの直近のメディアを取得する。アクセストークンの所有者によって最も直近のメディアを取得させるために、あなたは user-idの代わりにselftを使うことができる。

[パラメーター]

COUNT 取得するメディアの件数

MAX_TIMESTAMP この日時(UNIX timestamp)より以前のメディアを取得

ACCESS_TOKEN 有効なアクセストークン ※Instagram Ruby Gem では自動で設定される。

MIN_TIMESTAMP この日時(UNIX timestamp)より以後のメディアを取得

MIN_ID このメディアIDより後を取得

MAX_ID このメディアIDより前を取得

Instagram: get_users_media_recent

ユーザーの最近の投稿を取得する

Instagram Web API ドキュメント どこまで使えるか確認できる。

Page 14: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

14

ACCESS TOKEN アクセストークン とは

トークン はプログラムでは単語や記号の最小単位。 セキュリティでは、パスワードを発行する機器、または認証用の文字列を生成する仕組み。

Instagram ではユーザーIDとパスワードを入力してログインして、使用できる。

Webサービスのリクエストベースではログイン画面で入力するのは難しいので、CLIENT ID, CLIENT SECRETから生成された文字列(アクセストークン)を付加してもらうことで認証している。

ユーザーの最近の投稿を取得する

Page 15: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

15

ACCESS TOKEN アクセストークン は必要なときに、 Instagram Ruby gemが、CLIENT ID, CLIENT SECRETから生成してくれる。

ユーザーの最近の投稿を取得する

require "instagram"

Instagram.configure do |config|

config.client_id = "INSTAGRAM_CLIENT_ID"

config.client_secret = "INSTAGRAM_CLIENT_SECRET"

end

/config/initializers/instagram.rb

Page 16: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

16

GET /users/user-id/media/recent

https://api.instagram.com/v1/users/{user-id}/media/recent/?access_token=ACCESS-TOKEN

ユーザーの直近のメディアを取得する。アクセストークンの所有者によって最も直近のメディアを取得させるために、あなたは user-idの代わりにselftを使うことができる。

[パラメーター]

COUNT 取得するメディアの件数

MAX_TIMESTAMP この日時(UNIX timestamp)より以前のメディアを取得

ACCESS_TOKEN 有効なアクセストークン ※Instagram Ruby Gem では自動で設定される。

MIN_TIMESTAMP この日時(UNIX timestamp)より以後のメディアを取得

MIN_ID このメディアIDより後を取得

MAX_ID このメディアIDより前を取得

https://instagram.com/developer/endpoints/users/#get_users_media_recent

ユーザーの最近の投稿を取得する

あと、user-id(ユーザーID)をどうするか・・・

Page 17: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

17

Instagram ではユーザー名しかわからない。

ユーザーの最近の投稿を取得する

Page 18: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

18

http://jelled.com/instagram/lookup-user-id#

ユーザー名からユーザーIDを取得してあげる。

ユーザーの最近の投稿を取得する

Page 19: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

19

次は、user_recent_media リクエストがわかったので、レスポンスを確認してみる。

ユーザーの最近の投稿を取得する

Instagram: get_users_media_recent

Page 20: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

20

home_controller.rb

Viewでデバックしてみる。

class HomeController < ApplicationController

def index

@user = Instagram.user_recent_media(12413015,{:count =>

20})

end

end

index.html.erb

<% @user.each do |p| %>

<%= debug p %>

<%= image_tag(p.images.low_resolution.url,:class => "img-

rounded") %>

<% end %>

ユーザーの最近の投稿を取得する

Page 21: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

21

ユーザーの最近の投稿を取得する

debug での出力結果で確認

standard resolution が標準解像度(640x640)

low resolution が低解像度(320x320)

出力結果を見て、どのデータが使えるか、「アタリ」をつける。

Page 22: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

22

階層をたどって、イメージを取得すればOK!

index.html.erb

<% @user.each do |p| %>

<%= debug p %>

<%= image_tag(p.images.low_resolution.url,:class => "img-

rounded") %>

<% end %>

ユーザーの最近の投稿を取得する

debug での出力結果

Page 23: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

23

最後に

8月はTokyuRuby会議に行きます! (ビギナーズは9月に開催予定) ぜひ、みんなで行きましょう!

Page 24: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

24

今後の問い合わせ先

何かございましたら、

ご連絡ください(・∀・)

Twitter: @yoshiii514

Facebook: Yoshinori.Koba

Mail: [email protected]

最後に

Page 25: Instagram Ruby Gem と Instagram API から学んだことまとめ|【CoEdo.rb】Ruby / Ruby on Rails ビギナーズ勉強会 第6回

25

ご清聴ありがとうございました。