InstagramのAPIを使ってアクセストークンを取得する方法

今回はInstagram APIを使ってアクセストークンを取得を取得する方法と、簡単な使用例を紹介します。

自分のサイトに自分のインスタアカウントで投稿した写真を取得したい場合を想定しています。

また、今回のように簡単なことならサンドボックスの範囲内で行うことができますl。サンドボックスの範囲を超えるものは審査に通らないと使用できないので注意してください。

サンドボックスについては以下のサイトを参照してください。

https://www.instagram.com/developer/sandbox/

 

アクセストークンを取得

以下のページにアクセスします。ログインしていない場合は画面右上のログインをクリックします。

https://www.instagram.com/developer/

ログインできたら、画面右上のManage Clientsをクリックします。

管理者の登録画面になるので、サイトのURL、電話番号、APIの使用用途を入力してください。使用用途はざっくりでも構いません。

利用規約にチェックを入れ、Sign upをクリックします。

 

次はクライアントの登録をしていきます。

右上のRegister a New Clientをクリックします。

するとクライアントIDの登録画面に移動するので、必要な情報を入力していきましょう。入力欄の意味は以下の通り。

  • Application Name: 作成するアプリケーション名
  • Description: 作成するアプリケーションの説明文
  • Company Name: 会社名(今回は省略可)
  • Website URL: サイトのURL
  • Valid redirect URIs: 確認リダイレクト先のURL(今回はサイトのURLを入力)
  • Privacy Policy URL: プライバシーページのURL(今回は省略可)
  • Contact email: 連絡用メールアドレス(今回は省略可)

 

登録に成功すると、『Successfully registered』と表示されます。

 

続いてアクセストークンを取得していきます。

先ほど作成したアプリケーションの横にあるMANAGEボタンをクリックします。

次にSecurityをクリックしてタブを切り替えます。今回は「Disable implict OAuth」のチェックを外しておきましょう。

そうしたら以下のURLのクライアントIDの部分に自分のクライアントID、リダイレクトURIの部分にリダイレクト先のURIをそれぞれ指定してアクセスします。検索エンジンで直接URLを貼り付ければokです。

https://www.instagram.com/oauth/authorize/?client_id=クライアント ID&redirect_uri=リダイレクト URI&response_type=token

 

するとポップアップみたいな画面が表示されます。Authorizeをクリックしましょう。

ここでリダイレクトするのですが、リダイレクト先のURLは「リダイレクトURI/#access_token=アクセストークンの文字列」といったようになります。表示されているトークンは後ほど使用します。

 

PHPで投稿を取得する

実際にPHPで投稿を取得してみます。

例えば自分で投稿した写真の最新の投稿を取得するなら、エンドポイントは以下のようになります。

users/self/media/recent/

 

PHPのコードは以下のようになります。

<?php 
$access_token = 'ここにアクセストークン';
$url = 'https://api.instagram.com/v1/users/self/media/recent/?access_token='.$access_token;
$array = json_decode(file_get_contents($url), true); 

foreach($array['data'] as $data){ 
  $img = $data['images']['thumbnail']; 
?> 
<a href="<?php echo $data['link'] ?>" target="_blank"> 
  <img src="<?php echo $img['url']; ?>" width="<?php echo $img['width']; ?>" height="<?php echo $img['height']; ?>" alt=""> 
  <p><?php echo $data['caption']['text']; ?></p> 
</a> 
<?php
} 
?>

 

「ここにアクセストークン」の部分は先ほどURL欄に表示されていたアクセストークンを入力しましょう。

アクセストークンを連結したURLを使ってfile_get_contentsでjsonを取得し、json_decodeで配列形式に変換して$arrayから情報を取得していきます。

必要ならCSSでスタイルを指定すると綺麗ですね。

 

まとめ

InstagramのAPIを使って投稿を取得する方法でした。

最初は少しやることが多いかもしれないですが、APIを使って投稿を取得できるのはいいですね。

何かの参考になれば幸いです。