LoginSignup
6
5

More than 5 years have passed since last update.

インスタのAPIをPHP用にwrapされたライブラリをLaravel用にwrapしたvinkla/instagraを使ってインスタのAPIを叩く

Last updated at Posted at 2015-12-14

この投稿はオールアバウトアドベントカレンダー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などで叩くように自分で実装する必要がある。

6
5
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
6
5