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.


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

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


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


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.


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

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);

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.