17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Instagram APIをPHPでさくっと使う

Last updated at Posted at 2015-12-08

#最初に
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

17
16
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
17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?