Instagram API の備忘録
このサイトの画像投稿の実装に Instagram API を使うように変更したので簡単にまとめておきます。
- oauth ベースの認証があり、access_token をパラメータに API をコールするスタイルの API 設計になっている
- API にscope (API でアクセスできるデータの範囲)という概念があり、これを拡張するためには Instagram へ申し立てをする必要がある(このサイトでは basic だけで実装してるので申し立てしてません)
- oauth で redirect されたときのパラメータが現時点(2016/1/25)で undocument, 以下のように実装すると通りました。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use GuzzleHttp\Client as Guzzle; | |
// ... | |
if ($request->has('code')) { | |
$params = $request->all(); | |
$g = new Guzzle; | |
$postParams = [ | |
'form_params' => [ | |
'client_id' => config('services.instagram.client_id'), | |
'client_secret' => config('services.instagram.client_secret'), | |
'grant_type' => 'authorization_code', | |
'redirect_uri' => config('services.instagram.redirect'), | |
'code' => $params['code'], | |
] | |
]; | |
$response = $g->post('https://api.instagram.com/oauth/access_token', $postParams); | |
$body = json_decode($response->getBody()); | |
$token = $body->access_token; | |
// 以降 $token をつかって API コールする | |
} |
- token に期限や refresh の概念は実装されていない模様
- 本番環境で利用開始するに当たって、Instagram が想定しているユースケースに該当する場合に限り Sandbox から本番への移行申請を行う必要あり
- このサイトのように、自分自身の写真を提供するだけの場合などは Sandbox のまま運用してよい。こちらを参照