#最初に
InstagramではAPIを利用する際にアクセストークンが必要になります。
今回の記事はPHPでAPIを使用するケースなので、
そこを知りたい場合は「instagram アクセストークン 取得」で検索してください。
#本題
APIを利用しようとした時、Packagistに公開されているライブラリをいくつか使ってみましたが、利用したいAPIの使用方法が記載されてなかったり、指定ができないscopeがあったりと、微妙に使いにくいものばかりでした。(良いのがあったらごめんなさい)
OAuth認証するのであれば便利なのですが、サーバからAPIを利用するだけなので、これなら自分で実装した方が楽だなと感じて自作しました。
使いたいAPIは、公式ドキュメントを参照して下さい。
サンプルコード
class Instagram
{
private $access_token = 'xxx'; // dummy
/**
* リクエスト
* 例1:$instagram->request('users/self');
* 例2:$instagram->request('users/self/media/recent', ['count' => 50]);
*/
public function request($url, $parameters=[])
{
$parameters = $parameters + ['access_token' => $this->access_token];
$request_url = http_build_url($url, [
"scheme" => "https",
"host" => "api.instagram.com",
"path" => "/v1/{$url}/",
"query" => http_build_query($parameters),
]);
if ($request_url === false)
{
return false;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
if (!$response = json_decode($result))
{
return false;
}
return $response;
}
}
$instagram = new Instagram();
$user_info = $instagram->request('users/self');
$my_media = $instagram->request('users/self/media/recent', ['count' => 50]);
まだ試していない関数も多いですが、たぶんこれで大半はカバーできるかなと思います。
もし、http_build_queryが使えない環境であれば、下記ライブラリを利用してみてください。
https://packagist.org/packages/jakeasmith/http_build_url