Je travaille sur une application qui s'intègre à Instagram API pour accéder aux informations de l'utilisateur. J'ai réussi à récupérer le jeton d'accès à l'aide de l'URL autoriser mais je suis incapable d'extraire l'ID utilisateur à l'aide de l'URL access_token
je suis essayé à la fois les points finaux:
https://api.instagram.com/oauth/access_token?client_id=48275564e2c445f6b8e1356djfha3e0c&client_secret=ab2062da9f314e3489dke7ae9cbe6e5d&redirect_uri=http://localhost&grant_type=authorization_code
https://api.instagram.com/oauth/access_token
avec le corps de poste comme:
client_id=48275564e2c445f6b8e1356djfha3e0c&client_secret=ab2062da9f314e3489dke7ae9cbe6e5d&redirect_uri=http://localhost&grant_type=authorization_code&code=1351860224.4827556.5dc92c4d15ea4a4ea1b0d33eaf0eef19
(Les données de la demande sont modifiées), mais je reçois ce qui suit
{
"code": 400,
"error_type": "OAuthException",
"error_message": "No matching code found."
}
J'ai vu des tonnes de requêtes et de questions, mais je n'ai trouvé aucune solution au problème.
Le couple de questions que j'ai est:
1) is the field code in the URL is same as access_token, if not how could i get the code field's value.
2) is there any other mechanism(API) to fetch the user details given the username is not known.
S'il vous plaît, aidez-moi car je suis complètement coincé et je respecte mes échéances.
Pour moi, décocher Désactiver OAuth implicite dans le développeur instagram -> gérer les clients a résolu le problème.
J'ai trouvé que l'utilisation de form-data
ou application/x-www-form-urlencoded
fonctionne bien. Le plus important est la code
que vous obtenez de la redirection. Une seule requête est utilisée. Cela signifie que vous pouvez demander le jeton d'accès une fois pour code
. Si vous demandez plus d'une fois avec la même code
, vous obtiendrez le message d'erreur suivant:
{
code: 400,
error_type: "OAuthException",
error_message: "Matching code was not found or was already used."
}
Je vous souhaite le meilleur ;)
J'ai la même erreur. Il semble que le système de spam d’instagram désactive l’accès de l’utilisateur à n’importe quelle application non officielle. Il suffit de changer le mot de passe de l'utilisateur. Dans mon cas, c’était utile… .. Essayez aussi de créer une autre application.
UPD
De ma réponse à une autre question
Il semble que les utilisateurs obtiennent plus d'une code
et que vous voyez first code
, mais vous avez besoin de second
. Essayez les utilisateurs relogin
, si vous obtenez une erreur. L'utilisateur ne verra pas la page d'instagram avec le bouton de confirmation, juste les redirections.
Algorithme d'erreur possible:
1. User click auth link.
2. Get first code.
3. User click auth link (twice, redirection problem, public auth system, etc.)
4. Get another code (even on the same client_id, redirect_uri).
5. You get first code.
6. But first code already doesn't exists.
Essayez d’urlEncode le paramètre redirect_uri à
http%3A%2F%2Flocalhost
Et votre code param contient le "." caractère qui pourrait être une erreur.
code=1351860224.4827556.5dc92c4d15ea4a4ea1b0d33eaf0eef19
pourrait causer le problème
"error_message": "No matching code found."
"5dc92c4d15ea4a4ea1b0d33eaf0eef19" semble être le code correct
L'extrait de python instagram tardif échoue en raison de l'absence d'en-tête HTTP de type de contenu
response, content = http_object.request(url, method="POST", body=data,headers = {"Content-type": "application/x-www-form-urlencoded"})
l'ajout de l'application/x-www-form-urlencoded a fonctionné pour moi
Le problème est ici que besoin URL de redirection définie comme http: // localhost/signin-instagram
la partie signin-instagram est très importante Allez donc à Instagram.com/developer -> Gérer le client-> Sécurité -> Les URI de redirection valides définis avec cette fin http: /../signin-instagram
Je vais mentionner ce qui a fonctionné pour moi.
Étape 1. Générez un nouveau secret client à partir de votre panneau.
Étape 2. Suivez l’étape 1 mentionnée ici pour obtenir le code à nouveau.
Étape 3. Envoyez à nouveau la demande avec les paramètres modifiés.
Assurez-vous d'être connecté au navigateur lorsque vous envoyez la demande. Vous obtiendrez la réponse requise.