Stephan Romhart über Technik, Kultur und Philosophie

Schwer zu sagen · Technik

Instagram-Feed – Anleitung für Code, Access Token und API-Einbindung in Php

Stephan 0

Wie auch beim Facebook-Feed habe ich kein einfaches Tutorial für die Einbindung eines Instagram-Feeds gefunden. Weder auf Instagram.com noch mit Google. Im Artikel werden alle benötigten Schritte beschrieben. Für das Tutorial benötigst Du einen lokalen Server mit Apache und Php.

Schritt 1: Login und Erstellung neuer Client

Gehe auf http://instagram.com/developer. Log Dich ein, klicke auf "Manage Clients" und klicke dann auf "Register a new Client". Fülle alle benötigten Felder aus. Das Feld "OAuth redirect_uri" solltest Du aus Sicherheitsgründen auf Deinen lokalen Server "http://localhost" ohne Anführungszeichen stellen. "OAuth redirect_uri" definiert, wohin Dein Access-Token geleitet wird.

Nach dem Absenden erhältst Du die Werte "Client ID" und "Client Secret". Beide Werte werden für die Access-Token-Generierung benötigt.

Schritt 2: Autorisierungs-Code

Um einen Access-Token von Instagram zu bekommen, benötigt man zuvor einen Code, mit dem man einen Zugriff bestätigt. Kopiere die folgende Zeile in die Adresszeile Deines Browsers und ersetzte das {client_id} durch die "Client ID", die zu in Schritt 1 erhalten hast.

https://instagram.com/oauth/authorize/?client_id={client_id}&redirect_uri=http://localhost&response_type=code

Es erscheint nun ein Fenster mit der Aufforderung zur Autorisierung. Hier klickst Du auf "Authorize". Der Instagram-Server leitet Dich nun weiter auf Deinen Localhost und hängt als Get-Parameter den benötigten Code an. Den kopierst Du aus der Adresszeile.

Schritt 3: Access-Token anfordern

Ich habe ein kleines PHP-Skript geschrieben, das Du nur kopieren, mit Deinen Daten aus Schritt 1 (Client Id, Client Secret) und Schritt 2 (Code) anpassen und dann ausführen musst, um den Access-Token zu erhalten. Die Redirect-Uri muss denselben Wert haben, wie in Schritt 1 angegeben, sonst klappt es nicht.

$fields = array(
  'client_id'     => '{Client Id aus Schritt 1}',
  'client_secret' => '{Client Secret aus Schritt 1}',
  'grant_type'    => 'authorization_code',
  'redirect_uri'  => 'http://localhost',
  'code'          => '{code aus Schritt 2}'
);
$url = 'https://api.instagram.com/oauth/access_token';

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_TIMEOUT,20);
curl_setopt($ch,CURLOPT_POST,true); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);
$result = curl_exec($ch);
curl_close($ch); 

$result = json_decode($result);

# Ausgabe Token
print_r($result->access_token);

Der somit generierte Access-Token kann dann in folgendes Php-Skript, welches den Instagram-Feed anfragt, eingesetzt werden.

Der komplette Code

# Instagram-Konfiguration
$instagram_config = array(
  'access_token' => '{access_token aus Schritt 3}',
  'photo_count' => 9
);

# Instagram-API-Url
$instagram_url  = 'https://api.instagram.com/v1/users/self/media/recent/?';
$instagram_url .= 'access_token='.$instagram_config['access_token'].'&';
$instagram_url .= 'count='.$instagram_config['photo_count'];

# JSON-String
$instagram_json_string = file_get_contents($instagram_url);

# Feed-Daten
$instagram_feed = json_decode($instagram_json_string,true,512,JSON_BIGINT_AS_STRING);

# Test-Ausgabe
echo '<pre>';
print_r($instagram_feed['data']);
echo '</pre>';

Schreibt mir doch, ob diese Vorgehensweise bei Euch geklappt hat, oder ob die Anleitung noch zu ungenau ist.

Weiterführende Links