web-dev-qa-db-fra.com

Impossible d'obtenir un access_token pour Instagram Basic Display API

J'essaie d'obtenir un access_token d'Instagram pour utiliser leur API d'affichage de base pour une nouvelle application (afficher simplement des tweets sur une page Web).

J'ai suivi ces étapes: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

Mais je suis bloqué à l'étape 5: Échangez le code contre un jeton

La demande cURL renvoie toujours une erreur 400 avec le message: "Le code correspondant n'a pas été trouvé ou a déjà été utilisé"

Cependant, après de nombreux tests, j'ai obtenu un access_token une seule fois, mais il a expiré environ une heure plus tard. Cela semble être très aléatoire.

L'API d'affichage de base d'Instagram semble plutôt nouvelle. Il y a quelque temps, j'ai utilisé des applications créées sur le site Web https://www.instagram.com/developer/ et cela fonctionnait. Maintenant, ce site affiche ce message:

MISE À JOUR: À partir du 15 octobre 2019, l'enregistrement des nouveaux clients et la révision des autorisations sur la plate-forme API Instagram sont abandonnés au profit de l'API Instagram Basic Display.

... avec un lien vers le fichier developers.facebook.com.

9
Maxime Freschard

J'ai eu ce problème lorsque j'essayais d'implémenter une application.
Mon problème était le code généré lorsque vous autorisez les autorisations.
Essayez de supprimer #_ à la fin du code généré et essayez de générer à nouveau le jeton

Création exemple de code: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A #_

Code généré modifié: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A

2
Rômulo Milani

Je viens de réussir en supprimant le #_ de fin à la fin dans le code qu'ils vous donnent. Vous ne savez pas si c'était votre problème?

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

2
Emmanuel

J'ai essayé d'utiliser l'outil de ligne de commande selon les documents d'origine ( https://developers.facebook.com/docs/instagram-basic-display-api/getting-started ), mais pas de chance. ..

Voici ce qu'il faut faire en 3 étapes faciles:

  1. Première chose: installez Postman https://www.postman.com/downloads/
  2. Faites une demande POST à https://api.instagram.com/oauth/access_token avec les paramètres dans le corps, [~ # ~] pas [~ # ~] les paramètres. Assurez-vous que le x-www-form-urlencoded l'option est activée.
  3. Vous devriez maintenant obtenir le statut 200 OK et une réponse avec les deux access_token et user_id.
{
    "access_token": "IGQVJYUXlDN...",
    "user_id": 17841400...
}

Jours heureux!!

Voir la capture d'écran pour les paramètres corrects:

enter image description here

1
Anas

J'ai trouvé la solution.

L'URI direct doit être le même que celui utilisé au début.

ex. Tu utilises

www.abc.com/auth 

pour obtenir le code. Lorsque vous échangez le jeton, le redirect_uri doit être le même que

www.abc.com/auth
0
JackWu

J'avais aussi le même problème, j'ai résolu d'effacer le cache, les cookies et autres données du navigateur.

Ensuite, j'ai fait une nouvelle demande.

Essayez-le, cela a fonctionné avec moi.

0
Ueslen Santos

J'utilisais également l'ancienne API Instagram. J'ai dû changer quelques éléments pour que mon code fonctionne sur la nouvelle API. Je ne sais pas ce que vous utilisez, c'est comme ça que je l'ai fait avec PHP.

$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);
0
Nobody