Es ist unmöglich, ein access_token für die Instagram Basic Display API zu erhalten

9

Ich versuche, ein access_token von Instagram zu erhalten, um die Basic Display API für eine neue App zu verwenden (einfach Tweets auf einer Webseite anzeigen).

Ich habe die folgenden Schritte ausgeführt: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

Aber ich stecke bei Schritt 5 fest: Tauschen Sie den Code gegen ein Token aus

Die cURL-Anforderung gibt immer einen 400-Fehler mit der Meldung zurück: "Übereinstimmender Code wurde nicht gefunden oder wurde bereits verwendet."

Nach vielen Tests erhielt ich jedoch nur einmal ein access_token, das jedoch ungefähr eine Stunde später ablief. Dies scheint sehr zufällig zu sein.

Die Instagram Basic Display API scheint ziemlich neu zu sein. Vor einiger Zeit habe ich Apps verwendet, die auf der Website https://www.instagram.com/developer/ erstellt wurden, und es hat früher funktioniert. Jetzt zeigt diese Site diese Nachricht an:

UPDATE: Ab dem 15. Oktober 2019 werden die Registrierung neuer Kunden und die Überprüfung der Berechtigungen auf der Instagram API-Plattform zugunsten der Instagram Basic Display API eingestellt.

... mit einem Link zu developer.facebook.com.

Maxime Freschard
quelle
Wo können Sie das Zugriffstoken erhalten? Ich bekomme immer den gleichen 400 Fehler, selbst wenn ichcurl
Gianfranco P.
@GianfrancoP. Haben Sie versucht, Ihre Facebook-App zu veröffentlichen? (in der Facebook-Entwicklerkonsole für Apps)
Maxime Freschard
Ich habe es endlich geschafft, das Zugriffstoken zu bekommen. Meine App war schon einmal live, aber jetzt füge ich ein Instagram-Login hinzu und warte ab heute auf die Genehmigung. Ich habe es geschafft, es zum Laufen zu bringen, nicht sicher, was ich genau falsch gemacht habe, tbh
Gianfranco P.
Überprüfen Sie meine Antwort mit etwas Code hier stackoverflow.com/a/59305113/1474270 es könnte helfen
patJnr

Antworten:

3

Es ist mir nur gelungen, das nachfolgende #_ am Ende des Codes zu entfernen, den sie Ihnen geben. Nicht sicher, ob das Ihr Problem war?

https://developers.facebook.com/support/bugs/436837360282557/

Emmanuel
quelle
Hallo @Emmanuel, mir ist auch aufgefallen, dass es beim Entfernen dieser nachgestellten Zeichen funktioniert hat. Aber meistens funktioniert es überhaupt nicht.
Maxime Freschard
3

Ich hatte dieses Problem, als ich versuchte, eine Anwendung zu implementieren.
Mein Problem war der Code, der generiert wurde, wenn Sie die Berechtigungen zulassen.
Versuchen Sie, #_ vom Ende des generierten Codes zu entfernen, und versuchen Sie erneut, das Token zu generieren

Generierter Code Beispiel: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A #_

Generierter Code bearbeitet: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A

Rômulo Milani
quelle
1

Ich habe versucht, das Befehlszeilentool gemäß den Originaldokumenten ( https://developers.facebook.com/docs/instagram-basic-display-api/getting-started ) zu verwenden, aber kein Glück ...

Folgendes können Sie in drei einfachen Schritten tun:

  1. Als erstes: Installieren Sie Postman https://www.postman.com/downloads/
  2. Stellen Sie eine POST-Anfrage https://api.instagram.com/oauth/access_tokenmit den Parametern im Body, NICHT mit den Parametern . Stellen Sie sicher, dass die x-www-form-urlencodedOption aktiviert ist.
  3. Sie sollten jetzt einen Status 200 OKund eine Antwort mit access_tokenund erhalten user_id.
{
    "access_token": "IGQVJYUXlDN...",
    "user_id": 17841400...
}

Glückliche Tage!!

Die korrekten Einstellungen finden Sie im Screenshot:

Geben Sie hier die Bildbeschreibung ein

Anas
quelle
0

Ich hatte auch das gleiche Problem, ich löste das Löschen des Cache, des Coockies und anderer Browserdaten.

Dann habe ich eine neue Anfrage gestellt.

Probieren Sie es aus, es hat bei mir funktioniert.

Ueslen Santos
quelle
0

Ich habe die Lösung gefunden.

Der direkte Uri muss derselbe sein, den Sie am Anfang verwendet haben.

Ex. Sie nutzen

www.abc.com/auth 

um den Code zu bekommen. Wenn Sie das Token austauschen, muss redirect_uri dasselbe sein wie

www.abc.com/auth
JackWu
quelle
0

Ich habe auch die alte Instagram-API verwendet. Ich musste einige Dinge ändern, damit mein Code auf der neuen API funktioniert. Ich bin mir nicht sicher, was Sie verwenden. So habe ich es mit PHP gemacht.

$url = 'https://api.instagram.com/oauth/access_token';

$fields = array(
    'app_id' => 'YOUR_APP_ID',
    'app_secret' => 'YOUR_APP_SECRET_ID',
    'grant_type' => 'authorization_code',
    'redirect_uri' => 'YOUR_REDIRECT_URL',
    'code' => $code
);

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_VERIFYPEER, false);

$result = curl_exec($ch);
curl_close($ch);

//get the access token from the string sent from Instagram
$splitString = explode('"access_token":', $result);
$removeRest = explode(',', $splitString[1]);
$withSpace = str_replace('"','', $removeRest[0]);
$access_token = str_replace(' ','', $withSpace);
Niemand
quelle
Hallo @Nobody, ich benutze auch PHP mit Guzzle (cURL-Bibliothek). Mein Code ähnelt Ihrem. Es hat gestern einmal funktioniert, aber die meiste Zeit funktioniert es nicht ...
Maxime Freschard
Hallo @Nobody, wie ruft man den Endpunkt api.instagram.com/oauth/authorize auf, um einen Code mit cURL zu erhalten? Wenn ich das mache, werde ich zur Instagram-Anmeldeseite weitergeleitet.
Maxime Freschard
Maxime, du musst cURL nicht verwenden. Instagram fügt den Code in die URL ein, nachdem er auf Ihre Website weitergeleitet wurde. Sie können HTTP GET verwenden, um den Code abzurufen: $ code = $ _GET ['code'];
Niemand
-1

Ich benutze PHP, aber ohne Lib. Vielleicht hilft dir dieser.

curl.php

class InstagramApi 
{

public function GetAccessToken($client_id, $redirect_uri, $client_secret, $code) {      
    $url = 'https://api.instagram.com/oauth/access_token';

    $curlPost = 'app_id='. $client_id . '&redirect_uri=' . $redirect_uri . '&app_secret=' . $client_secret . '&code='. $code . '&grant_type=authorization_code';
    $ch = curl_init();      
    curl_setopt($ch, CURLOPT_URL, $url);        
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);      
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);            
    $data = json_decode(curl_exec($ch), true);  
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch);    

    if($http_code != '200')         
        throw new Exception('Error : Failed to receieve access token');

    return $data;

  }

index.php

include "curl.php";
include "instagram_keys.php"; // holding APP ID, SECRET KEY, REDIRECT URI

 $instagram_ob = new InstagramApi();
 $insta_data = $instagram_ob->GetAccessToken(INSTAGRAM_CLIENT_ID, INSTAGRAM_REDIRECT_URI, INSTAGRAM_CLIENT_SECRET, $_GET['code']);  
  echo  $insta_data['access_token'];
  echo  $insta_data['user_id'];

HINWEIS: $_GET['code']ist erforderlich und Sie sollten wissen, wie Sie den Code erhalten. Lies hier

Navbro
quelle