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.
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
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/
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:
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.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:
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
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.
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);