勉強メモ Instagram gemを使う
自分の投稿を引っ張ってくるまでのメモ
結果から言うとエンドポイントが古いAPIがあって一部使えなかった。 でもとりあえず欲しいAPIのエンドポイントはまだ生きていたので使用した。
参考
インストール
Gemfileに以下を追加してbundle install
gem 'instagram'
アプリケーションの登録, Client IDの取得
下記から登録
http://instagram.com/developer/
登録内容は参考ページ参照
登録できると、CLIENT ID
, Client Secret
が取得できる。
なお、最初はSandbox Modeなる設定になっている。 Instagramのコンテンツに完全にアクセスするにはレビューが必要らしい。
Sandbox Modeでも機能制限はあるものの普通にAPIは使えるっぽい。 詳しくはこちら
取得したClient ID
とClient secret
を登録
require 'instagram' Instagram.configure do |config| config.client_id = "CLIENT_ID" config.client_secret = "CLIENT_SECRET" end
AccessTokenを取得
APIを使用するためににAccessTokenが必要。 使用しないと怒られる
400: The access_token provided is invalid. (Instagram::BadRequest)
AccessTokenの取得方法はこちら。
以下にかいつまんだ取得方法を
1. Codeを取得する
以下のURLを叩いてcodeを取得する
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
叩くとredirect URLにcodeが付加されている
http://your-redirect-uri?code=CODE
これをコピっておく
2. AccessTokenをリクエスト
以下のCURLを叩く
curl -F 'client_id=CLIENT_ID' \ -F 'client_secret=CLIENT_SECRET' \ -F 'grant_type=authorization_code' \ -F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \ -F 'code=CODE' \ https://api.instagram.com/oauth/access_token
うまくいくと以下のレスポンスが返ってくる
{ "access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d", "user": { "id": "1574083", "username": "snoopdogg", "full_name": "Snoop Dogg", "profile_picture": "..." } }
フィードを取得する
以下、実装例
require 'instagram' Instagram.configure do |config| config.client_id = "CLIENT_ID" config.client_secret = "CLIENT_SECRET" end Instagram.access_token = "ACCESS_TOKEN" medias = Instagram.user_recent_media(USER_ID) medias.each do |media| p media end
ここで必要なのはACCESS_TOKEN
(前述)とUSER_ID
USER_IDはAccessToken取得時のレスポンスの"id"からコピペする。