web-dev-qa-db-fra.com

Comment obtenir un jeton d'accès Instagram

Je me bats vraiment dans la façon dont je suis censé obtenir mon jeton d'accès 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 des clients et rediriger l'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 d'où identifiant puis obtenir mon jeton d'accès.

68
Gerry Mckay

Le lien vers la documentation officielle de l'API est http://instagram.com/developer/authentication/

Longstory short - deux étapes:

Obtenir le code

Ouvrir https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code avec les informations de http://instagram.com/developer/clients/manage/

Obtenir un jeton d'accès

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
43
Marek Jalovec

Presque toutes les réponses que les gens ont envoyées jusqu'à présent ne traitent que de la gestion des jetons d'accès sur le front-end, en suivant la procédure "d'authentification implicite" côté client d'Instagram. Cette méthode est moins sécurisée et non recommandée selon la documentation API d'Instagram.

En supposant que vous utilisez un serveur, les documents Instagram échouent en quelque sorte à fournir une réponse claire sur l'échange de code pour un jeton, car ils ne donnent qu'un exemple de demande cURL. Pour résumer, vous devez envoyer une requête POST à leur serveur avec le code fourni et toutes les informations de votre application. Ils renverront un objet utilisateur comprenant les informations de l'utilisateur et le jeton.

Je ne sais pas dans quelle langue vous écrivez, mais j'ai résolu ceci dans Node.js avec le module de requête npm dans lequel vous pouvez trouver ici .

J'ai analysé l'URL et utilisé cette information 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 le contenu de configAuth par vos propres informations. Vous n'utilisez probablement pas Node.js, mais nous espérons que cette solution vous aidera à traduire votre propre solution dans la langue dans laquelle vous l'utilisez.

10
Quest
9
Andre

L'API Instagram est destinée non seulement à vous, mais également à tout utilisateur Instagram susceptible de s'authentifier avec votre application. J'ai suivi les instructions sur le site Web Instagram Dev . En utilisant la première méthode (Explicit), j'ai pu le faire assez facilement sur le serveur. 

Étape 1) Ajoutez à votre page Web un lien ou un bouton sur lequel un utilisateur pourrait cliquer pour lancer le processus d'authentification:

<a href="https://api.instagram.com/oauth/authorize/?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code">Get Started</a>

YOUR_CLIENT_ID et YOUR_REDIRECT_URI vous seront attribués une fois que vous aurez enregistré votre application dans le système Instagram, avec YOUR_CLIENT_SECRET utilisé ci-dessous.

Étape 2) Sur l'URI défini pour votre application, identique à YOUR_REDIRECT_URI, vous devez accepter la réponse du serveur Instagram. Le serveur Instagram vous communiquera une variable code dans la demande. Ensuite, vous devez utiliser cette code et d’autres informations sur votre application pour faire une autre demande directement à partir de votre serveur afin d’obtenir le access_token. Je l'ai fait en python en utilisant le framework Django, comme suit:

dirigez Django vers la fonction 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 response, traitant la demande, 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_string = response.read()
        insta_data = json.loads(response_string)
        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 dans PHP ou dans tout autre langage côté serveur. 

5
jeffery_the_wind

Désactivez l'oauth implicite sous l'autorisation de sécurité et ALORS chargez ceci:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

Spécifiez REDIRECT-URI dans votre compte et tapez-le exactement comme spécifié.

3
Callombert

Le jeton d'accès est renvoyé sous forme de fragment d'URI après avoir autorisé l'application à utiliser vos données Instagram. Cela devrait ressembler à ceci: enter image description here

1
Adam

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
1
ashishashen

Cela a bien fonctionné pour moi:

http://jelled.com/instagram/access-token

Pour votre information, je l’ai utilisé en combinaison avec le plugin jQuery Instagram que vous trouverez ici; http://potomak.github.com/jquery-instagram

0
Rinocerontes

100% travaille ce code

<a id="button" class="instagram-token-button" href="https://api.instagram.com/oauth/authorize/?client_id=CLIENT_ID&redirect_uri=REDIRECT_URL&response_type=code">Click here to get your Instagram Access Token and User ID</a>
<?PHP
  if (isset($_GET['code'])) {

        $code = $_GET['code'];

        $client_id='< YOUR CLIENT ID >';
        $redirect_uri='< YOUR REDIRECT URL >';
        $client_secret='< YOUR CLIENT SECRET >';
        $url='https://api.instagram.com/oauth/access_token';

        $request_fields = array(
            'client_id' => $client_id,
            'client_secret' => $client_secret,
            'grant_type' => 'authorization_code',
            'redirect_uri' => $redirect_uri,
            'code' => $code
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        $request_fields = http_build_query($request_fields);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request_fields);
        $results = curl_exec($ch); 
        $results = json_decode($results,true);
        $access_token = $results['access_token'];

        echo $access_token;

        exit();
    }

?>
0
mehul

Si vous cherchez des instructions, consultez cet article post . Et si vous utilisez C # ASP.NET, jetez un œil à ce repo .

0
Mike

En utilisant https://www.hurl.it/ i a pu voir ceci: { "Code": 400, "Error_type": "OAuthException", "error_message": "Le code correspondant n'a pas été trouvé ou a déjà été utilisé." }

alors: vous devez obtenir un nouveau code pour chaque requête.

0
Tone Škoda