PHP アプリケーションと Instagram の統合: 第 1 回

Instagram API を利用して、PHP アプリケーションに Instagram の写真を統合する

Instagram は、ユーザーがスマートフォンで写真を撮って、その写真を Web を介して他のユーザーと共有できる、人気の高い写真共有サービスです。アプリケーション開発者は Instagram REST API を使用して、これらの写真を検索し、写真とそれに関連付けられているコメントや「いいね!」の情報を取得することができます。この全 2 回からなる記事では Instagram API を紹介するとともに、Instagram のユーザーが生成した豊富なコンテンツのリポジトリーを利用して革新的な Web アプリケーションを作成するために、この API を PHP で使用する方法を説明します。

2013年 2月 01日 ― 「画像の詳細情報の取得」および「参考文献」の各セクションに第 2 回へのリンクを追加しました。

Vikram Vaswani, Founder, Melonfire

Photo of Vikram VaswaniVikram Vaswani は、オープンソースのツールと技術を専門とするコンサルティング・サービス会社、Melonfire の創業者で、現在 CEO を務めています。彼は、『Zend Framework: A Beginners Guide』および『PHP: A Beginners Guide』の著者でもあります。



2013年 5月 30日

はじめに

Android または Apple のカメラ付きスマートフォンをお持ちの読者の方は、すでに Instagram を使用しているかもしれません。この無料のアプリケーションでは、ユーザーは写真を撮り、その写真を特殊なエフェクトとフィルターで加工して、Instagram の Webサイトで友達と共有することができます。Instagram は Twitter のようなもので、写真がツイートの代わりになります。2012年 9月の時点でユーザー数は 1 億人を超えていることから、ユーザーが望んでいる何らかのことを Instagram が行っていることは明らかです。

Instagram は、ユーザーが写真を共有するためのプラットフォームを提供するだけでなく、充実した開発者用 API も用意しています。開発者は Instagram API を使用して、ユーザーが生成したコンテンツにアクセスし、コンテンツ駆動型の Web アプリケーションを作成することができます。この API は REST モデルに従っているため、私のお気に入りの PHP をはじめ、JSON を理解するプログラミング言語であれば、どの言語からでも利用することができます。

Instagram API を紹介するこの全 2 回からなる記事では、PHP アプリケーションに Instagram のユーザーが生成したコンテンツを統合して利用する方法を説明します。例として、写真とコメント・フィードを取得する方法、キーワード、ユーザー、あるいは場所で写真を検索する方法、ユーザーのプロフィールを取得する方法、そしてユーザー間の関係を管理する方法を説明します。それでは皆さん、始めましょう!


Instagram API を使い始める準備

Instagram API を使用するアプリケーションの開発を始める前に、この API がどのように動作するのかを理解しておく必要があります。他の多くの Web API と同じように、Instagram API は HTTP 上で動作し、指定されたエンドポイントに対して HTTP リクエストが送信されるのを待機しています。このリクエストを受信すると、API サーバーはクエリーに対し、要求されたデータが含まれる JSON フィードをレスポンスとして返します。このデータは、サーバー・サイドのプログラミング言語 (例えば PHP や Perl など) またはクライアント・サイドのツールキット (例えば jQuery や mooTools など) を使って構文解析することができ、そこからコンテンツを抽出して Web ページに統合することができます。

この動作を確かめるには、始めに 2 つのことを行います。

  1. Instagram アカウントを作成します。登録は無料です。アカウントの作成には Android、iPhone、iPad の Instagram 対応アプリを使用することができます。これらのアプリを使って登録した後、スマートフォンで何枚か写真を撮って、ご自分の Instagram プロフィールにアップロードしてください。
  2. Instagram API にアクセスするためのクライアント・アプリケーションを作成します。上記のステップで作成したアカウントを使用して Instagram の Web サイトにログインし、開発者用コンソール (「参考文献」のリンクを参照) から新規クライアントを登録します。クライアントの登録では、名前と説明などの基本的なクライアント情報に加え、OAuth 2.0 認証用のコールバック URL を入力する必要があります (図 1
    図 1. Instagram クライアントの登録 (「Register new OAuth Client (新規 OAuth クライアントの登録)」画面)
    Instagram クライアントの登録 (「Register new OAuth Client (新規 OAuth クライアントの登録)」画面) のスクリーン・キャプチャー

    入力した情報が送信されると、登録したクライアントには、固有のクライアント ID とクライアント・シークレットが割り当てられます (図 2)。これらの情報は、OAuth 2.0 を使用して Instagram API にアクセスする際に必要になるので、書き留めておいてください。

    図 2. Instagram クライアントの登録 (「Manage Clients (クライアントの管理)」画面)
    Instagram クライアントの登録 (「Manage Clients (クライアントの管理)」画面) のスクリーン・キャプチャー

クライアント ID とクライアント・シークレットを入手できると、Instagram API に送信する署名付き OAuth 2.0 リクエストを作成するために必要なツールが揃ったことになります。OAuth 2.0 のプロトコルとワークフローについては、さまざまなドキュメントが用意されています (「参考文献」の関連ドキュメントへのリンクを参照)。そのため、この記事ではその詳細に踏み込むことはせず、代わりに以降に記載する例で、Instagram API を使用してこのワークフローを実装する方法を具体的に説明します。

Instagram API をサード・パーティー・アプリケーションで使用する場合には、Instagram API の使用条件が適用されることにも注意してください。この使用条件は数分で読めるので、開発作業に移る前に目を通すことで、適用されるすべての規則に確実に従えるようにしてください。この文書へのリンクは、「参考文献」に記載されています。


人気の高い画像の一覧表示

PHP コードを作成する前に、Instagram API がどのような動作をするか説明しておきます。REST ベースのサービスの例に漏れず、API メソッドは、指定のリソース・エンドポイントに対して HTTP リクエストを送信することで呼び出されます。この HTTP リクエストには 1 つ以上の入力パラメーターが含まれます。サーバーはこれらのパラメーターを処理し、Web ページ内で構文解析して使用できる JSON レスポンスを送り返します。セキュリティー上の理由から、すべての Instagram API リクエストは SSL を使用して送信する必要があります。

Instagram API には、さまざまなエンドポイントがあります。用意されているエンドポイントには、メディア用、コメント用、「いいね!」用、タグ用、場所用、ユーザー用、ユーザー間の関係用があります。一部のエンドポイントには、リクエストのパラメーターとしてクライアント ID を渡すだけでアクセスできますが、それ以外のエンドポイントには署名付き OAuth 2.0 リクエストが必要です。

Instagram からの標準的なレスポンスのパケットには、写真とその関連情報の詳細なフィードが含まれています。その一例を見るには、Web ブラウザーを開いて、API エンドポイント https://api.instagram.com/v1/media/popular?client_id=xx (この URL の xx の部分は、ご自分の Instagram クライアント ID に置き換えてください) へリクエストを送信します。このリクエストにより、その時点で最も人気の高い Instagram 上の画像が含まれる JSON フィードが生成されます。この出力 (図 3) にざっと目を通して、主な要素を把握してください。おわかりのように、このレスポンスには、人気の高い写真の一覧が含まれ、それぞれの写真ごとに画像の URL (サムネール画像の URL、低解像度の画像の URL、高解像度の画像の URL)、キャプション、タグ、作成時刻、コメント数、「いいね!」の数、フィルター、場所、短縮 URL、ユーザー情報などが提供されています。

図 3. Instagram API レスポンスの例
Instagram API レスポンスの例を示す画像のスクリーン・キャプチャー

この情報を読みやすい Web ページのフォーマットにするのはとても簡単です。それには、PHP の json_decode() 関数といくつかの基本的な HTML を使用します。リスト 1 に一例を示します。

リスト 1. 人気の高い画像の取得
<html>
  <head></head>
  <body>  
    <h1>Popular on Instagram</h1>  
    <?php
    // load Zend classes
    require_once 'Zend/Loader.php';
    Zend_Loader::loadClass('Zend_Http_Client');

    // define consumer key and secret
    // available from Instagram API console
    $CLIENT_ID = 'YOUR-CLIENT-ID';
    $CLIENT_SECRET = 'YOUR-CLIENT-SECRET';

    try {
      // initialize client
      $client = new Zend_Http_Client('https://api.instagram.com/v1/media/popular');
      $client->setParameterGet('client_id', $CLIENT_ID);

      // get popular images
      // transmit request and decode response
      $response = $client->request();
      $result = json_decode($response->getBody());
      
      // display images
      $data = $result->data;  
      if (count($data) > 0) {
        echo '<ul>';
        foreach ($data as $item) {
          echo '<li style="display: inline-block; padding: 25px"><a href="' . 
            $item->link . '"><img src="' . $item->images->thumbnail->url . 
            '" /></a> <br/>';
          echo 'By: <em>' . $item->user->username . '</em> <br/>';
          echo 'Date: ' . date ('d M Y h:i:s', $item->created_time) . '<br/>';
          echo $item->comments->count . ' comment(s). ' . $item->likes->count . 
            ' likes. </li>';
        }
        echo '</ul>';
      }

    } catch (Exception $e) {
      echo 'ERROR: ' . $e->getMessage() . print_r($client);
      exit;
    }
    ?>
  </body>
</html>

リスト 1 は、まず Zend Framework オート・ローダーのインスタンスを設定した後、Zend_Http_Client クラスのインスタンスを初期化します。このクライアントを使用して、人気の高い画像用の Instagram API エンドポイント (https://api.instagram.com/v1/media/popular) に対して GET リクエストを送信します。エンドポイントの URL には、Instagram 開発者用コンソールで生成されたクライアント ID を含めなければならないことに注意してください。

このリクエストに対する JSON レスポンスが、PHP の json_decode() 関数によって構文解析されて PHP オブジェクトに変換されます。リスト 1 のコードを図 3 に示された未加工の JSON オブジェクトと比較すると、オブジェクト・メンバーと JSON のキー/値ペアが対応していることがわかるはずです。したがって、オブジェクト・メンバーを繰り返し処理して、個々の画像のデータ (画像の URL、所有者のユーザー名、作成時刻、コメント数、「いいね!」の数など) を取得し、そのデータを Web ページとして表示するためのフォーマットにすることができます。図 4 に、その出力例を示します。

図 4. 人気の高い画像の一覧表示
人気の高い画像を一覧表示する Web ページのスクリーン・キャプチャー

タグによる画像の検索

図 3 に示されているように、Instagram の各画像には 1 つ以上のタグを関連付けることができます。タグとは、画像を分類するために使用できる説明用のキーワードです。Instagram API には、タグを検索して取得するための複数のエンドポイントもあります。そのうち最もよく使用することになるのは、検索語と一致するタグを検索できる /tags/search エンドポイントです。リスト 2 に、このエンドポイントの使用方法を示します。

リスト 2. タグの検索
<html>
  <head></head>
  <body>
    <h1>Instagram Tag Search</h1>
    <?php
    if (!isset($_POST['submit'])) {
    ?>
    <form method="post" 
      action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
      Search for:
      <input type="text" name="q" /> 
      <input type="submit" name="submit" value="Search" />      
    </form>
    <?php
    } else {
    ?>
    <h2>Search results for '<?php echo $_POST['q']; ?>'</h2>
    <?php
      require_once 'Zend/Loader.php';
      Zend_Loader::loadClass('Zend_Http_Client');

      // define consumer key and secret
      // available from Instagram API console
      $CLIENT_ID = 'YOUR-CLIENT-ID';
      $CLIENT_SECRET = 'YOUR-CLIENT-SECRET';

      try {
        // initialize client
        $client = new Zend_Http_Client('https://api.instagram.com/v1/tags/search');
        $client->setParameterGet('client_id', $CLIENT_ID);
        $client->setParameterGet('q', $_POST['q']);

        // get and display similar tags
        $response = $client->request();
        $result = json_decode($response->getBody());
        $data = $result->data;  
        if (count($data) > 0) {
          echo '<ul>';
          foreach ($data as $item) {
            echo '<li>' . $item->name . ' (' . $item->media_count . 
              ') </li>';
          }
          echo '</ul>';
        }
      } catch (Exception $e) {
        echo 'ERROR: ' . $e->getMessage() . print_r($client);
        exit;
      }
    }  
    ?>
  </body>
</html>

リスト 2 は、ユーザーが検索語を入力するための単純な Web フォームをセットアップするところから始まっています。フォームが送信されると、新しい Zend_Http_Client オブジェクトが初期化され、/tags/search エンドポイントに対するリクエストが作成されます。これはリスト 1 で説明したのと同様ですが、このエンドポイントには、ユーザーが入力した検索語がリクエストの引数 q に格納されてリクエストのパラメーターとして渡されます。

このリクエストに対するレスポンスは、検索語と一致するタグのコレクションです。この情報をデコードして Web ページのフォーマットにすることで、図 5 のような結果を生成することができます。

図 5. タグの一覧表示
「beach」を検索した場合のタグの一覧を示す画面のスクリーン・キャプチャー

多くの場合、ユーザーが興味を持つのはタグに関連付けられた画像であり、タグそのものではありません。そこで登場するのが、/tags/[tag-name]/media/recent エンドポイントです。このエンドポイントの構造からお察しのとおり、これは、指定されたタグ名で最近タグ付けされた画像の一覧を生成するエンドポイントです。リスト 3 で、Instagram の写真をタグで検索する単純なアプリケーションを作成して、タグを実際に利用する方法を説明します。

リスト 3. タグによる画像の検索
<html>
  <head></head>
  <body>
    <h1>Instagram Photo Search by Tag</h1>
    <?php
    if (!isset($_POST['submit'])) {
    ?>
    <form method="post" 
      action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
      Search for:
      <input type="text" name="q" /> 
      <input type="submit" name="submit" value="Search" />      
    </form>
    <?php
    } else {
    ?>
    <h2>Search results for '<?php echo $_POST['q']; ?>'</h2>
    <?php
      require_once 'Zend/Loader.php';
      Zend_Loader::loadClass('Zend_Http_Client');

      // define consumer key and secret
      // available from Instagram API console
      $CLIENT_ID = 'YOUR-CLIENT-ID';
      $CLIENT_SECRET = 'YOUR-CLIENT-SECRET';

      try {
        // initialize client
        $client = new Zend_Http_Client('https://api.instagram.com/v1/tags/'. 
          $_POST['q'] . '/media/recent');
        $client->setParameterGet('client_id', $CLIENT_ID);

        // get images with matching tags
        // transmit request and decode response
        $response = $client->request();
        $result = json_decode($response->getBody());
        
        // display images
        $data = $result->data;  
        if (count($data) > 0) {
          echo '<ul>';
          foreach ($data as $item) {
            echo '<li style="display: inline-block; padding: 25px"><a href="' . 
              $item->link . '"><img src="' . $item->images->thumbnail->url . 
              '" /></a> <br/>';
            echo 'By: <em>' . $item->user->username . '</em> <br/>';
            echo 'Date: ' . date ('d M Y h:i:s', $item->created_time) . '<br/>';
            echo $item->comments->count . ' comment(s). ' . $item->likes->count . 
              ' likes. </li>';
          }
          echo '</ul>';
        }

      } catch (Exception $e) {
        echo 'ERROR: ' . $e->getMessage() . print_r($client);
        exit;
      }
    }  
    ?>
  </body>
</html>

リスト 3リスト 1リスト 2 を混成したものです。このリストではまず、ユーザーが検索語を入力するための Web フォームを表示します。次に、入力された検索語をタグとして使用し、そのタグと一致する写真の一覧を検索するためのリクエストを /tags/[tag-name]/media/search エンドポイントに送信します。これによって生成されたオブジェクトのコレクションがリスト 1 と同じように処理されて、サムネール画像と基本的なプロフィール情報を表示するページが生成されます。図 6 に、結果の一例を示します。

図 6. タグによる画像の検索結果の一覧表示
タグによる画像の検索結果を一覧表示するページのスクリーン・キャプチャー

場所による画像の検索

タグで画像を検索できるのと同じく、場所で画像を検索することもできます。/media/search エンドポイントは lat および long パラメーターを受け取り、その緯度と経度に一致する画像の一覧を生成します。この仕組みを説明するために、リスト 4 について検討してみましょう。このリストでは、ユーザーが緯度と経度の座標を入力できるようにして、指定されたエリアとその周辺の画像の一覧を生成しています。

リスト 4. 場所による画像の検索
<html>
  <head></head>
  <body>
    <h1>Instagram Photo Search by Location</h1>
    <?php
    if (!isset($_POST['submit'])) {
    ?>
    <form method="post" 
      action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
      Latitude: <input type="text" name="lat" />  
      Longitude: <input type="text" name="long" /> 
      <input type="submit" name="submit" value="Search!" />      
    </form>
    <?php
    } else {
    ?>
    <h1>Search results for 'lat:<?php echo $_POST['lat']; ?>, 
      long:<?php echo $_POST['long']; ?>'</h1>
    <?php
      require_once 'Zend/Loader.php';
      Zend_Loader::loadClass('Zend_Http_Client');

      // define consumer key and secret
      // available from Instagram API console
      $CLIENT_ID = 'YOUR-CLIENT-ID';
      $CLIENT_SECRET = 'YOUR-CLIENT-SECRET';

      try {
        // initialize client
        $client = new Zend_Http_Client('https://api.instagram.com/v1/media/search');
        $client->setParameterGet('client_id', $CLIENT_ID);
        $client->setParameterGet('lat', $_POST['lat']);
        $client->setParameterGet('lng', $_POST['long']);

        // get images matching specified location
        $response = $client->request();
        $result = json_decode($response->getBody());
        
        // display images
        $data = $result->data;  
        if (count($data) > 0) {
          echo '<ul>';
          foreach ($data as $item) {
            echo '<li style="display: inline-block; padding: 25px"><a href="' . 
              $item->link . '"><img src="' . $item->images->thumbnail->url . 
              '" /></a> <br/>';
            echo 'By: <em>' . $item->user->username . '</em> <br/>';
            echo 'Date: ' . date ('d M Y h:i:s', $item->created_time) . '<br/>';
            echo $item->comments->count . ' comment(s). ' . $item->likes->count . 
              ' likes. </li>';
          }
          echo '</ul>';
        }

      } catch (Exception $e) {
        echo 'ERROR: ' . $e->getMessage() . print_r($client);
        exit;
      }
    }  
    ?>
  </body>
</html>

図 7 に、lat と long をそれぞれ「18.9218 N」と「72.8347 E」として (ムンバイにあるインド門の位置の緯度と経度です)、画像の検索をした結果を示します。

図 7. 場所による画像の検索結果の一覧表示
場所による画像の検索結果を一覧表示するページのスクリーン・キャプチャー

リクエストに「距離」のパラメーターを追加することで、検索エリアの直径を 1 km から 5 km に拡大できることに注意してください。ここでは例を記載していませんが、Instagram では特定の場所に関する情報を取得するために使用できる /locations API エンドポイントも提供しています。


画像の詳細情報の取得

これまでの例では特定の基準に一致する画像のコレクションを検索および取得する方法を説明してきましたが、Instagram には、特定の画像に関する詳細情報を取得するために使用できる /media/[media-id] エンドポイントもあります。リスト 5 に、このエンドポイントから入手できる情報のタイプを示します。

リスト 5. 画像のデータの取得
<html>
  <head>
    <style>
    #container {
      margin: 0 auto;    
    }
    #info {
      float: left; 
      width: 300px;
      padding-right: 20px;
    }
    #image {
      float: left; 
      width: 320px;
      padding-right: 20px;
    }    
    #comments {
      clear: both;
    }
    .item {
      float:none;
      clear:both;
      margin-top:1em;  
    }
    .profile {
      float:left;
      margin-right:1em; 
      padding-bottom: 10px;
      height: 48px;
      width: 48px;
    }
    </style>
  </head>
  <body>  
    <h1>Instagram Image Detail</h1>
    <?php
    // load Zend classes
    require_once 'Zend/Loader.php';
    Zend_Loader::loadClass('Zend_Http_Client');

    // define consumer key and secret
    // available from Instagram API console
    $CLIENT_ID = 'YOUR-CLIENT-ID';
    $CLIENT_SECRET = 'YOUR-CLIENT-SECRET';

    try {
      // define image id
      $image = '338314508721867526';
    
      // initialize client
      $client = new Zend_Http_Client('https://api.instagram.com/v1/media/' . $image);
      $client->setParameterGet('client_id', $CLIENT_ID);

      // get image metadata
      $response = $client->request();
      $result = json_decode($response->getBody());
      
      // display image data
    ?>
      <div id="container">
        <div id="info">
          <h2>Meta</h2>  
          <strong>Date: </strong> 
          <?php echo date('d M Y h:i:s', $result->data->created_time); ?>
          <br/>
          <strong>Creator: </strong>
          <?php echo $result->data->user->username; ?>
          (<?php echo !empty($result->data->user->full_name) ? 
            $result->data->user->full_name : 'Not specified'; ?>)
          <br/>
          <strong>Location: </strong>
          <?php echo !is_null($result->data->location) ?
          $result->data->location->latitude . ',' . 
            $result->data->location->longitude : 'Not specified'; ?>
          <br/>
          <strong>Filter: </strong>
          <?php echo $result->data->filter; ?>
          <br/>
          <strong>Comments: </strong>
          <?php echo $result->data->comments->count; ?>
          <br/>
          <strong>Likes: </strong>
          <?php echo $result->data->likes->count; ?>
          <br/>
          <strong>Resolution: </strong>
          <a href="<?php echo $result->data->images
            ->standard_resolution->url; ?>">Standard</a> | 
          <a href="<?php echo $result->data->images
            ->thumbnail->url; ?>">Thumbnail</a>
          <br/>
          <strong>Tags: </strong>
          <?php echo implode(',', $result->data->tags); ?>
          <br/>
        </div>
        <div id="image">
          <h2>Image</h2>  
          <img src="<?php echo $result->data->images
            ->low_resolution->url; ?>" /></a>
        </div>
        <div id="comments">
          <?php if ($result->data->comments->count > 0): ?>
          <h2>Comments</h2>
          <ul>
            <?php foreach ($result->data->comments->data as $c): ?>
              <div class="item"><img src="<?php echo $c
                ->from->profile_picture; ?>" class="profile" />
              <?php echo $c->text; ?> <br/>
              By <em> <?php echo $c->from->username; ?></em> 
              on <?php echo date('d M Y h:i:s', $c->created_time); ?>
              </div>
              
              </li>
            <?php endforeach; ?>
          </ul>
          <?php endif; ?>
        </div>      
      </div>
    <?php
    } catch (Exception $e) {
      echo 'ERROR: ' . $e->getMessage() . print_r($client);
      exit;
    }
    ?>
  </body>
</html>

リスト 5 は、Zend_Http_Client ライブラリーをロードしてから、/media/[media-id] エンドポイントに対するリクエストを作成します。リクエスト URI には、メディア ID が組み込まれます。一般に、メディア ID はそれぞれの検索結果に他の写真メタデータと一緒に含められます。

/media/[media-id] API リクエストに対するレスポンスは、指定された画像に関する詳細情報が含まれた JSON 文書です。詳細情報には、画像の作成日時、作成者のユーザー名、写真が撮影された場所の緯度と経度、写真に適用された Instagram フィルター、「いいね!」の数、コメント数が含まれます。返されるデータには、画像の 3 つのバージョン (サムネール、低解像度バージョン、高解像度バージョン) への URL と、関連付けられているタグの一覧もあります。JSON 文書には、最近のコメントの一覧が付加されています。したがって、上記のリストとその出力からわかるように、この一覧を処理すれば、写真に関するコメントと、さらにそれぞれのコメントを投稿したユーザーの名前とプロフィール写真を表示することができます。

図 8 は、リスト 5 の出力を表示したものです。この出力が示すように、Instagram API を使用することで、Instagram アプリケーションや Web サイトに表示される情報のすべてを、カスタム PHP アプリケーションで表示することができます。

図 8. 画像の詳細の表示
画像の詳細を表示するページのスクリーン・キャプチャー

これは、氷山の一角に過ぎません。開発者は Instagram API を使用して、認証済みユーザーの写真フィードにアクセスしたり、ユーザーを基準に写真を検索したり、ユーザー同士のフォロワー関係を作成したりするなど、他にもさまざまな操作を実行することができます。ほとんどの場合、このようなユーザーを対象とした操作を実行するには、署名付き OAuth 2.0 リクエストを使用する必要があります。つまり、開発者は OAuth 2.0 ワークフローを実装しなければなりません。この点に加え、記事の第 2 回では Instagram API の他の側面についても説明するので、必ず続きを読んでください。

参考文献

学ぶために

  • Integrating PHP applications with Instagram, Part 2」(Vikram Vaswani 著、developerWorks、2013年2月): OAuth ベースのユーザー認可によって、PHP と Instagram による Web アプリケーションの機能を高め、保護された API エンドポイントへリクエストを送信できるようにしてください。この全 2 回からなる連載記事の第 2 回では、サード・パーティーの PHP ライブラリーに用意されている、写真やコメントなどの取得に役立つ既製の関数を探ります。
  • Instagram API エンドポイント: Instagram を活用する方法を学んでください。
  • Instagram 開発者用コンソール: Instagram クライアントを作成してください (Instagram アカウントが必要です)。
  • Instagram 認証: Instagram 開発者ドキュメントで Instagram の使用条件やその他の情報を調べてください。
  • Instagram API Developers フォーラム: Instagram 開発者向けフォーラムでサポートを受けたり、ディスカッションに参加したりしてください。
  • Zend_Http_Client コンポーネント: HTTP (Hyper-Text Transfer Protocol) リクエストを実行するための、この簡単なインターフェースについての詳細を読んでください。
  • OAuth 2.0 仕様: Web アプリケーション、デスクトップ・アプリケーション、携帯電話、リビング・ルーム機器に固有の認可フローについての詳細を読んでください。
  • この著者による他の記事 (Vikram Vaswani 著、developerWorks、2007年8月から現在まで): XML や Google API、その他の技術に関する記事を読んでください。
  • New to XML: XML を学ぶために必要なリソースを入手してください。
  • developerWorks の XML エリア: DTD、スキーマ、XSLT など、XML 分野でのスキルを磨くために必要なリソースを見つけてください。広範な技術に関する記事、ヒント、チュートリアル、標準、そして IBM Redbooks については、XML 技術文書一覧を参照してください。
  • オープンソース技術を使用して開発し、IBM の製品と併用するときに役立つ広範なハウツー情報、ツール、およびプロジェクト・アップデートについては、developerWorks Open source ゾーンを参照してください。
  • developerWorks Web development ゾーン: さまざまな Web ベースのソリューションを話題にした記事を調べてください。広範な技術に関する記事、ヒント、チュートリアル、標準、そして IBM Redbooks については、Web development の技術文書一覧を参照してください。
  • IBM の XML 認定技術者: XML および関連技術において IBM 認定技術者になる方法を調べてください。
  • developerWorks のテクニカル・イベントおよび Webcast: これらのセッションで最新情報を入手してください。
  • Twitter での developerWorks: 今すぐ登録して developerWorks のツイートをフォローしてください。
  • developerWorks podcast: ソフトウェア開発者向けの興味深いインタビューとディスカッションを聴いてください。
  • developerWorks オンデマンド・デモ: 初心者向けの製品のインストールおよびセットアップから熟練開発者向けの高度な機能に至るまで、さまざまに揃ったデモを見てください。

製品や技術を入手するために

  • Zend Framework: ハイパフォーマンス PHP アプリケーションによく使われている、この人気のフレームワークをダウンロードしてください。
  • IBM 製品の評価版: DB2、Lotus、Rational、Tivoli、および WebSphere のアプリケーション開発ツールとミドルウェア製品を体験するには、評価版をダウンロードするか、IBM SOA Sandbox のオンライン試用版を試してみてください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML, Open source, Web development
ArticleID=931103
ArticleTitle=PHP アプリケーションと Instagram の統合: 第 1 回
publish-date=05302013