Cheeeeze!

Teil 3: Verwendung des Instagram API in PHP
Kommentare

Nachdem Sie nun wissen, wie Sie die populären Fotos abrufen können, ist der nächste Schritt, die Daten mit PHP abzurufen und zu verarbeiten.

Dazu erstellen Sie zunächst eine einfache Konfigurationsdatei, in der Sie zentral Ihre Client-ID hinterlegen:

$config = array(
  'clientId' => 'IHRE CLIENT ID'
);

Um alle Aufrufe an das API zu kapseln, erstellen Sie eine Instagram-Klasse, die diese Aufgaben erledigen wird. An den Konstruktur der Klasse übergeben Sie die Client-ID, um die Klasse von Ihrer Konfiguration zu entkoppeln:

class Instagram {
  protected $clientId;

  public function __construct($clientId) {
    $this->clientId = $clientId;
  }
}

Dieser Klasse fügen Sie nun eine Methode hinzu, um die populären Fotos abzurufen:

public function getPopularMedia() {
  $url = sprintf("https://api.instagram.com/v1/media/popular?client_id=%s",
         $this->clientId);
  return $this->getUrl($url);
}

In der Methode erstellen Sie den URL, den Sie abrufen möchten, und übergeben ihn an eine Methode getUrl(). Die Aufgabe dieser Methode ist es dann, die HTTP-Anfrage zu stellen, auf eventuelle Fehler zu reagieren und die zurückgegebenen JSON-Daten in PHP-Objekte zu parsen. In Ihrer produktiven Applikation werden Sie mit großer Wahrscheinlichkeit ein Framework einsetzen, das für alle diese Aufgaben bereits Komponenten liefert, die Sie nur noch orchestrieren müssen. Um diesen Artikel möglichst frameworkneutral zu halten, wird die Methode mit einfachem PHP-Code implementiert (Listing 2).

Listing 2

protected function getUrl($url) {
  $json = @file_get_contents($url);
  if ($json === false) {
    throw new Exception("Error fetching data from $url");
  }
  $data = json_decode($json);
  if ($data->meta->code !== 200) {
    throw new Exception("Instagram returnded error code " . $data->meta->code);
  }
  return $data->data;
}

Für die einfache GET-Anfrage kann file_get_contents() verwendet werden, das im Fehlerfall false zurückliefert. Das Parsen der JSON-Daten erledigt in PHP bereits die Funktion json_decode(), und die Auswertung des Fehlers ist denkbar einfach implementiert: Wird kein Statuscode 200 zurückgeliefert, reagiert die Methode einfach mit einer Exception. Bitte beachten Sie, dass Sie diesen Code nicht produktiv verwenden sollten; die verschiedenen Fehler werden nicht umfassend genug abgefangen und die Exceptions geben Interna der Applikation (wie die Client-ID) aus!

Anzeige der Fotos

Damit haben Sie alle Methoden, die Sie für eine einfache Anfrage an das Instragram-API benötigen, bereits implementiert. Ihr erster Instagram-Client konnte also in gerade mal 30 Zeilen implementiert werden. Listing 3 zeigt Ihnen nun, wie der Client einzusetzen ist. Nachdem Sie sowohl Konfiguration als auch Client eingebunden haben, erzeugen Sie eine neue Instagram-Instanz und rufen die Methode getPopularMedia() auf. Im Erfolgsfall gibt diese Methode ein Array mit den beliebten Bildern zurück.

Listing 3

require_once "Instagram.v1.php";
require_once "config/instagram.php";

$instagram = new Instagram($config['clientId']);
$popular = $instagram->getPopularMedia();

foreach ($popular as $entry) {
  printf('</pre>
<div class="instanail"><a href="%s">', $entry->link); printf('<img src="%s" alt="" width="150" height="150" /></a> ', $entry->images->thumbnail->url); printf('%d <i class="icon-heart"></i>', $entry->likes->count); printf(' / %d <i class="icon-comment"></i>', $entry->comments->count); print '</div>
<pre>';
}

Über dieses Array iterieren Sie nun und geben für jedes Bild den Thumbnail in der Größe 150 x 150 Pixel aus. Diesen adressieren sich einfach über $entry->images->thumbnail->url. Damit der Besucher Ihrer Website das Bild auch in Originalgröße sehen kann, verlinken Sie einfach auf die Instagram-Website. Praktischerweise liefert das API unter $entry->link bereits einen Short-URL zur Instagram-Seite des Bildes.

Da es sich um die gerade populärsten Fotos auf Instagram handelt, ist natürlich interessant, wie viele Likes und Kommentare die einzelnen Bilder haben. Diese Informationen erhalten Sie via $entry->likes->count bzw. $entry->comments->count. Abbildung 3 zeigt Ihnen, wie die Applikation, die die aktuell populärsten Fotos ausgibt, aussehen könnte. Um die Seite etwas attraktiver zu gestalten, wird das Framework Twitter Bootstrap verwendet. Es liefert bereits HTML-Code für Navigation, Typografie und sogar die kleinen Icons mit, sodass auch hier mit wenigen Zeilen HTML-Code ein ansehnliches Ergebnis erzielt werden kann. Als HTML-Vorlage dient das Hero-Template.

Abb. 3: Mit wenigen Zeilen PHP-Code rufen Sie die beliebtesten Fotos auf Instagram ab

Abb. 3: Mit wenigen Zeilen PHP-Code rufen Sie die beliebtesten Fotos auf Instagram ab

 

Weiter mit: Teil 4

Alle Teile: Teil 1, Teil 2, Teil 3, Teil 4, Teil 5

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -