この投稿はオールアバウトアドベントカレンダー15日目の投稿になります。
#まえがき
Instagram使っているでしょうか?
よくInstagramから写真を取得して表示する。みたいなサイトが増えてきています。
たとえばWeb上からInstagramを便利に使えるWEBSTAなどです。その他にも、Instagram APIを使っているサービスが徐々にひろがりつつあります。
※なお筆者はinstaを使いこなせてはおりません。
※11/17にInstagramのAPIが変更されました。
新しいAPIに関しては以下のライブラリでは対応しないようなので、使用する際にはお気をつけ下さい。
InstagramのAPI
InstagramではAPIを提供していますが(https://www.instagram.com/developer/)、本記事ではAPIの詳しい説明は行いません。
APIを便利に使えるようなライブラリの紹介が中心になります。
※11/17にInstagramのAPIが変更されました。
新しいAPIに関しては以下のライブラリでは対応しないようなので、使用する際にはお気をつけ下さい。
2015/11/17より、API KEY作成時にはsandboxモードになり アクセスが500/hourになるようです。
PHP用ライブラリ cosenary/Instagram-PHP-API
PHP用のライブラリとしてcosenary/Instagram-PHP-APIというライブラリがあります。
ユーザのメディアを取得するメソッドなどがあるようですが、
今回はこのライブラリを直接使うわけではないので、このライブラリの詳しい説明も行いません。
Laravel用の vinkla/instagram
vinkla/instagramは cosenary/Instagram-PHP-APIをwrapしてLaravelで使いやすくしたライブラリです。
インストール
composer.jsonに以下を追加
"require": {
"vinkla/instagram" : "~3.2"
}
そして、composer update
設定
config/app.phpのprovidersに以下を追加
Vinkla\Instagram\InstagramServiceProvider
config/app.phpのaliasesに以下を追加
'Instagram' => 'Vinkla\Instagram\Facades\Instagram',
設定ファイルを自動生成するために以下コマンド実行
php artisan vendor:publish
するとconfig/instagram.phpが生成される。
config/instagram.php内に接続情報を記入するところがあるので変更する
'connections' => [
'main' => [
'client_id' => env('INSTAGRAM_CLIENT_ID'),
'client_secret' => env('INSTAGRAM_SECRET_ID'),
'callback_url' => env('INSTAGRAM_CALLBACK_URL'),
]
],
設定値はこのファイルに直接記載してもいいが、環境ごとに切り分けがしたいので、envファイルに記載した。
最近タグ付けされたメディア一覧を取得したい
Instagram::getTagMedia($tag, $limit);
パラメータ $tag : 指定のタグ
$limit : 取得件数
これでobjとして返される。
obj->dataが今回取得したデータとなるので、あとはforeachなりで好きに調理する。
メディアにつけられたコメントを取得したい
Instagram::getMediaComments($id)
パラメータ $id: 対象メディアのid
これもobjで返却される。
他にもメソッドが用意されているため、使いたいものを調べて使ってみるといい。
このライブラリの欠点
取得した件数の上限までいき、次のページの情報を取得したい時に
obj->pagination->next_urlのurlで叩くと次のページの情報が取得できるが、
これを叩くのがライブラリ上用意されていないのでCurlなどで叩くように自分で実装する必要がある。