web-dev-qa-db-fra.com

Instagram retournant "Le code correspondant n'a pas été trouvé ou était déjà utilisé" lors de l'utilisation de OAuth

J'essaie d'utiliser Instagram OAuth à l'aide de la documentation du développeur à l'adresse

https://www.instagram.com/developer/authentication/

Les étapes 1 et 2 fonctionnent sans aucun problème. J'ai donc mon Client-ID, le Client-Secret, le Redirect-URI et le code. 

Mais chaque fois que j'essaie d'obtenir le Acces Token j'obtiens l'erreur suivante:

{
"code": 400, 
"error_type": "OAuthException", 
"error_message": "Matching code was not found or was already used."
}

Des conseils pour résoudre ce problème?

36
sma

Nous rencontrons le même problème. Il semble que se déconnecter d’Instagram, puis tenter d’utiliser Instagram OAuth via notre site après s’être déconnecté d’Instagram est une solution de contournement.

7
Cliff

Nous rencontrons le même problème depuis hier (après des mois de bon travail). Nous l'avons signalé hier via la fonction "Signaler un problème" sur https://www.instagram.com/developer/clients/manage/ et je vous encourage à faire de même.

Encore à entendre, mais il semble probable que ce soit leur but, mais plutôt quelque chose que nous faisons.

EDIT: Cela fonctionne également très bien pour nos serveurs de développement (qui utilisent différentes adresses IP pour interagir avec l'API d'IG) mais ne fonctionne pas sur notre serveur de production à partir de l'une des adresses IP disponibles sur le serveur de production.

EDIT2: (Juillet 2016) vient de tester et il a mystérieusement commencé à fonctionner sur nos serveurs de production. Pas encore de réponse au ticket de support d'Instagram.

EDIT3: (décembre 2016) Et maintenant, cela échoue encore avec le même message ... On dirait que c'est la fin d'Instagram. Nous ne pouvons rien faire de plus. Frustrant.

6
scp

Nous rencontrons également le même problème d’hier, il semblerait que l’effacement du navigateur (ou de la nouvelle fenêtre de navigation privée) convienne. Bien que, l'application mobile où nous authentifions via un navigateur mobile, fonctionne bien. 

1
Ravi Misra

Mise à jour: / Supprimé tout mon historique de navigation, effacé le cache, etc. Comme si c'était un tout nouveau navigateur et qu'il fonctionne maintenant sans problème.

Je martèle l'URL d'authentification depuis des semaines maintenant. Tester et utiliser le même jeton stocké pour ré-autoriser. Peut-être que les jetons stockés ont une limite au nombre de fois où ils peuvent être réutilisés?

======

Avoir le même problème à compter d'aujourd'hui. L'autorisation fonctionnait bien auparavant - maintenant, je reçois la même réponse "Code de correspondance ...".

A plusieurs reprises, connecté et déconnecté de mon compte Instagram, créé un nouvel identifiant d'application et implicite Oauth désactivé/activé - le tout sans succès.

La vue "Applications autorisées" de mon compte Instagram indique que mon application a bien été autorisée, mais je ne peux pas appeler l'API. L'authentification via une fenêtre de navigation privée a donné une réponse positive, mais ce n'est pas une solution.

J'ai essayé de faire un rapport à Instagram via leur formulaire «Signaler un problème», mais cela ne me permettra pas de le soumettre.

1
spedley

Connectez-vous à Instagram, puis terminez l'étape 1 à partir de la documentation de l'API (https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code), puis suivez la redirection et copiez le code à partir de l'URL, puis déconnectez-vous de mon compte, puis complétez l'étape 3:

curl -F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
-F 'code=CODE' \
https://api.instagram.com/oauth/access_token

Cela a fonctionné pour moi.

1
miguelpelota

Résolu! Déconnectez-vous d'Instagram et réessayez. Cela a fonctionné pour moi.

0
joeyk16

J'ai résolu ce problème en créant un service côté serveur/serveur qui autorisait l'utilisateur.

Mon API backend est une application Ruby on Rails. Voici un extrait de code à comprendre.

  def token
    @response = Instagram.get_access_token(params[:code], redirect_uri: mobile_token_url)
    instagram_user = InstagramUserCreator.new(user_params)
    if instagram_user.find_or_create
      redirect_to "taddarmobileapp://?token=#{instagram_user.user.token}"
    else
      redirect_to 'taddarmobileapp://'
    end
  end

Je stocke simplement le jeton sur le téléphone et l'utilise pour autoriser l'utilisateur à utiliser mon API backend. 

0
joeyk16