Ich arbeite an einem Plugin für WordPress, bei dem ein Benutzer auf die Schaltfläche „Auf Instagram anmelden“ klickt, um meine Instagram-App zu autorisieren. Nach der Autorisierung erhält das Plugin im Grunde nur die neuesten Instagram-Fotos von einem Benutzer und zeigt sie über ein Widget an.
Hier ist eine Schritt-für-Schritt-Anleitung, wie mein Plugin funktioniert:
- Der Benutzer klickt auf einer WordPress-Einstellungsseite auf „Bei Instagram anmelden“.
- Der Benutzer wird zum Autorisierungsbildschirm von Instagram (Anmeldebildschirm) weitergeleitet.
- Der Benutzer authentifiziert und genehmigt meine App erfolgreich.
- Instagram leitet den Benutzer zu my Umleitungs-URI.
- Die Datei „instagram-api-redirect.php“ erhält sowohl den „code“- als auch den „return_uri“-Parameter. Wobei der “Code” zum Anfordern des “Zugriffstokens” verwendet wird.
- Es leitet zusammen mit dem “Zugriffstoken” zurück zur WordPress-Einstellungsseite.
- Das Plugin speichert das “Zugriffstoken” in der Datenbank, das für die Authentifizierung von Anfragen verwendet werden soll.
Ich habe ein Problem damit, dass ich die Fehlermeldung bekomme „Umleitungs-URI stimmt nicht mit ursprünglichem Umleitungs-URI überein“ auf Schritt 5. Es funktioniert gut, wenn ich den Abfrageparameter “return_uri” aus der entferne Umleitungs-URI.
Einige Details können helfen:
Hier ist mein Umleitungs-URI aus meiner App:
http://mysite.com/plugins/pulp_instagram/instagram-api-redirect.php
Hier ist mein Umleitungs-URI die ich an Instagram sende “/autorisieren”:
http://mysite.com/plugins/pulp_instagram/instagram-api-redirect.php?return_uri=http://localhost/instagram-app
Hier ist die vollständige Autorisierungs-URL, die ich an Instagram sende “/autorisieren”:
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=http://mysite.com/plugins/pulp_instagram/instagram-api-redirect.php?return_uri=http://localhost/instagram -app&response_type=code
Hier ist die URL-Antwort:
http://mysite.com/plugins/pulp_instagram/instagram-api-redirect.php?return_uri=http://localhost/instagram-app&code=557d15dacd0d40459edf70aa159476de
Dies ist der vollständige Code für die Datei “instagram-api-redirect.php”:
<?php
// the redirect uri
$return_uri = $_GET['return_uri'];
require 'instagram.class.php';
// Initialize class
$instagram = new Instagram(array(
'apiKey' => 'CLIENT-ID',
'apiSecret' => 'CLIENT-SECRET',
'apiCallback' => 'http://mysite.com/plugins/pulp_instagram/instagram-api-redirect.php'
));
// Receive OAuth code parameter
$code = $_GET['code'];
// Check whether the user has granted access
if (true === isset($code)) {
// Receive OAuth token object
$data = $instagram->getOAuthToken($code);
print_r($data);
} else {
// Check whether an error occurred
if (true === isset($_GET['error'])) {
echo 'An error occurred: '.$_GET['error_description'];
}
}
?>
Außerdem verwende ich die Klasse “Instagram PHP API” (instagram.class.php) von cosenary.
Danke im Voraus!