J’ai vraiment du mal à comprendre comment je veux obtenir mon jeton d’access pour Instagram,
J’ai enregistré un nouveau client, puis j’ai utilisé cette URL
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
pour renseigner l’ID du client et redirect Url.
J’ai ensuite été redirigé vers une page où il affichait un code dans l’URL mais à partir de là, je n’ai pas la moindre idée de l’endroit où id doit alors obtenir mon jeton d’access.
Le lien vers la documentation de l’API officielle est http://instagram.com/developer/authentication/
Longstory court – deux étapes:
Obtenir le code
Ouvrez https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code avec des informations de http://instagram.com/developer/clients/manage/
Obtenir un jeton d’access
curl \-F 'client_id=CLIENT-ID' \ -F 'client_secret=CLIENT-SECRET' \ -F 'grant_type=authorization_code' \ -F 'redirect_uri=YOUR-REDIRECT-URI' \ -F 'code=CODE' \ https://api.instagram.com/oauth/access_token
Presque toutes les réponses que les internautes ont envoyées jusqu’ici ne couvrent que la manière de gérer les jetons d’access sur le front, suite à la procédure “d’authentification implicite” côté client d’Instagram. Cette méthode est moins sécurisée et non recommandée selon les docs de l’API Instagram.
En supposant que vous utilisez un serveur, les docs Instagram échouent à fournir une réponse claire sur l’échange d’un code pour un jeton, car ils ne donnent qu’un exemple de requête cURL. Essentiellement, vous devez faire une demande POST à leur serveur avec le code fourni et toutes les informations de votre application, et ils renverront un object utilisateur comprenant les informations utilisateur et le jeton.
Je ne sais pas dans quelle langue vous écrivez, mais j’ai résolu ce problème avec Node.js avec le module request npm que vous pouvez trouver ici .
J’ai analysé l’url et utilisé ces informations pour envoyer la demande de publication
var code = req.url.split('code=')[1]; request.post( { form: { client_id: configAuth.instagramAuth.clientID, client_secret: configAuth.instagramAuth.clientSecret, grant_type: 'authorization_code', redirect_uri: configAuth.instagramAuth.callbackURL, code: code }, url: 'https://api.instagram.com/oauth/access_token' }, function (err, response, body) { if (err) { console.log("error in Post", err) }else{ console.log(JSON.parse(body)) } } );
Bien sûr, remplacez les éléments configAuth par vos propres informations. Vous n’utilisez probablement pas Node.js, mais j’espère que cette solution vous aidera à traduire votre propre solution dans la langue dans laquelle vous l’utilisez.
J’ai eu le même problème avant, mais je change l’URL dans ce
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
L’API Instagram est conçu non seulement pour vous, mais pour tout utilisateur Instagram qui pourrait s’authentifier avec votre application. J’ai suivi les instructions sur le site Instagram Dev . En utilisant la première méthode (explicite), j’ai été capable de le faire assez facilement sur le serveur.
Étape 1) Ajoutez un lien ou un bouton à votre page Web sur laquelle un utilisateur pourrait cliquer pour lancer le processus d’authentification:
Get Started
YOUR_CLIENT_ID
et YOUR_REDIRECT_URI
seront remis après avoir enregistré votre application avec succès dans le backend Instagram, avec YOUR_CLIENT_SECRET
utilisé ci-dessous.
Étape 2) À l’URI que vous avez défini pour votre application, qui est identique à YOUR_REDIRECT_URI
, vous devez accepter la réponse du serveur Instagram. Le serveur Instagram vous fournira une variable de code
dans la requête. Ensuite, vous devez utiliser ce code
et d’autres informations sur votre application pour effectuer une autre demande directement à partir de votre serveur pour obtenir le access_token
. Je l’ai fait en python en utilisant le framework Django, comme suit:
django direct à la fonction de response
dans urls.py
:
from django.conf.urls import url from . import views app_name = 'main' urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^response/', views.response, name='response'), ]
Voici la fonction de response
, gérant la requête, views.py
:
from django.shortcuts import render import urllib import urllib2 import json def response(request): if 'code' in request.GET: url = 'https://api.instagram.com/oauth/access_token' values = { 'client_id':'YOUR_CLIENT_ID', 'client_secret':'YOUR_CLIENT_SECRET', 'redirect_uri':'YOUR_REDIRECT_URI', 'code':request.GET.get('code'), 'grant_type':'authorization_code' } data = urllib.urlencode(values) req = urllib2.Request(url, data) response = urllib2.urlopen(req) response_ssortingng = response.read() insta_data = json.loads(response_ssortingng) if 'access_token' in insta_data and 'user' in insta_data: #authentication success return render(request, 'main/response.html') else: #authentication failure after step 2 return render(request, 'main/auth_error.html') elif 'error' in req.GET: #authentication failure after step 1 return render(request, 'main/auth_error.html')
Ce n’est qu’un moyen, mais le processus devrait être presque identique en PHP ou dans tout autre langage côté serveur.
Le jeton d’access est renvoyé sous la forme d’un fragment d’URI après avoir autorisé l’application à utiliser vos données Instagram. Il devrait ressembler à ceci:
Essaye ça:
http://dmolsen.com/2013/04/05/generating-access-tokens-for-instagram/
après avoir obtenu le code, vous pouvez faire quelque chose comme:
curl -F 'client_id=[your_client_id]' -F 'client_secret=[your_secret_key]' -F 'grant_type=authorization_code' -F 'redirect_uri=[redirect_url]' -F 'code=[code]' https://api.instagram.com/oauth/access_token
Désactivez l’oauth implicite sous l’authentification de sécurité et chargez ceci:
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
Spécifiez l’URI REDIRECT dans votre compte et tapez-le exactement comme indiqué.
Cela a bien fonctionné pour moi:
http://jelled.com/instagram/access-token
Pour info, je l’ai utilisé en combinaison avec le plugin jQuery Instagram que vous trouverez ici; http://potomak.github.com/jquery-instagram
Si vous cherchez des instructions, consultez cet article. Et si vous utilisez C # ASP.NET, consultez ce rapport.
En utilisant https://www.hurl.it/, j’ai pu voir ceci: {“code”: 400, “error_type”: “OAuthException”, “error_message”: “Le code correspondant n’a pas été trouvé ou était déjà utilisé.” }
donc: vous devez obtenir un nouveau code pour chaque demande.
Si vous ne souhaitez pas créer votre serveur, par exemple ne développer que sur le côté client (application Web ou application mobile), vous pouvez choisir une authentification implicite .
Comme le dit le document, faites d’abord une requête https avec
Remplissez votre ID-CLIENT et votre URL REDIRECT que vous avez désigné.
Ensuite, la page de connexion s’affiche, mais le plus important est de savoir comment obtenir le jeton d’access après la connexion correcte de l’utilisateur.
Après que l’utilisateur clique sur le bouton de connexion avec un compte et un mot de passe corrects, la page Web redirige vers l’URL que vous avez désignée, suivie d’un nouveau jeton d’access.
http: // votre-redirect-uri # access_token = ACCESS-TOKEN
Je ne suis pas familier avec le javascript, mais dans un studio Android, c’est un moyen facile d’ append un écouteur qui écoute l’événement sur lequel la page Web remplace l’URL vers la nouvelle URL (événement de redirection). vous, donc vous pouvez facilement le diviser pour obtenir le jeton d’access comme:
Ssortingng access_token = url.split (“=”) [1];
Cela signifie que l’url dans le tableau de chaînes dans chaque caractère “=”, alors le jeton d’access existe évidemment à [1].
aller gérer la page clinet dans:
http://www.instagram.com/developer/
définir une URL de redirection
puis :
utilisez ce code pour obtenir un jeton d’access:
tst