Obtenir des tokens d’accès et des autorisations

Ce guide explique comment utiliser la fenêtre d’autorisation pour obtenir des tokens d’accès pour utilisateur Instagram de courte durée et des autorisations d’utilisateurs d’Instagram.

Étape 1 : Obtenir une autorisation

La fenêtre d’autorisation permet aux utilisateurs de l’application d’accorder des autorisations et des tokens d’accès pour utilisateur Instagram de courte durée. Une fois qu’un utilisateur s’est connecté et a choisi les données auxquelles l’application est autorisée à accéder, nous le redirigeons vers votre application et incluons un code d’autorisation que vous pouvez échanger contre un token d’accès de courte durée.

Pour commencer, obtenez la fenêtre d’autorisation et affichez-la à l’utilisateur :

https://api.instagram.com/oauth/authorize
  ?client_id={instagram-app-id}
  &redirect_uri={redirect-uri}
  &scope={scope}
  &response_type=code
  &state={state}        //Optional

Paramètres de chaîne de requête

Tous les paramètres à l’exception de state sont requis.

ParamètreExemple de valeurDescription

client_id
Obligatoire
Chaîne numérique

990602627938098

Votre ID d’app Instagram affiché dans l’Espace App > Produits > Instagram > Basic Display.

redirect_uri
Obligatoire
Chaîne

https://socialsizzle.herokuapp.com/auth/

URI vers lequel nous redirigeons les utilisateurs après qu’ils ont autorisé ou refusé une demande d’autorisation. Vérifiez que celui-ci correspond exactement aux URI de base de votre liste d’URI oAuth valides. Gardez à l’esprit que l’Espace App peut avoir ajouté une barre oblique à la fin de vos URI. C’est pourquoi nous vous recommandons de vérifier la liste.

response_type
Obligatoire
Chaîne

code

Définit cette valeur sur code.

scope
Obligatoire
Liste séparée par des virgules ou des espaces

user_profile,user_media

Liste des autorisations séparées par des virgules (ou encodées au format URL et séparées par des espaces) à demander à l’utilisateur de l’application. Le paramètre user_profile est obligatoire.

state
Chaîne

1

Valeur facultative indiquant un état propre au serveur. Vous pouvez, par exemple, l’utiliser en guise de protection contre les problèmes CSRF. Nous incluons ce paramètre et sa valeur lors de la redirection de l’utilisateur vers vous.

Exemple d’URL de fenêtre d’autorisation

https://api.instagram.com/oauth/authorize
  ?client_id=990602627938098
  &redirect_uri=https://socialsizzle.herokuapp.com/auth/
  &scope=user_profile,user_media
  &response_type=code

Autorisation réussie

Si l’autorisation fonctionne, nous redirigeons l’utilisateur vers votre redirect_uri et vous transmettons un code d’autorisation via le paramètre de chaîne de requête code. Capturez le code afin que votre application l’échange contre un token d’accès pour utilisateur Instagram de courte durée.

Les codes d’autorisation sont valides pendant une heure et ne peuvent être utilisés qu’une seule fois.

Exemple de redirection d’authentification réussie

https://socialsizzle.herokuapp.com/auth/?code=AQBx-hBsH3...#_

Notez que les caractères #_ seront ajoutés à la fin de l’URI de redirection, mais qu’ils ne font pas partie du code en lui-même. N’hésitez donc pas à les supprimer.

Autorisation annulée

Si l’utilisateur annule le flux d’autorisation, nous redirigeons cet utilisateur vers votre redirect_uri et ajoutons les paramètres d’erreur suivants. Il vous incombe de gérer correctement ces situations et d’afficher un message approprié à l’attention de vos utilisateurs.

ParamètreValeur

error

access_denied

error_reason

user_denied

error_description

The+user+denied+your+request

Exemple de redirection pour autorisation annulée

https://socialsizzle.herokuapp.com/auth/?error=access_denied
  &error_reason=user_denied
  &error_description=The+user+denied+your+request

Étape 2 : Échanger le code contre un token

Une fois que vous avez reçu le code, échangez-le contre un token d’accès de courte durée en envoyant une demande POST au point de terminaison suivant :

POST https://api.instagram.com/oauth/access_token

Paramètres du corps

Ajoutez les paramètres suivants au corps de votre demande POST.

ParamètreExemple de valeurDescription

client_id
Obligatoire
Chaîne numérique

990602627938098

Votre ID d’app Instagram affiché dans l’Espace App > Produits > Instagram > Basic Display.

client_secret
Obligatoire
Chaîne

a1b2C3D4

Votre clé secrète d’Instagram affichée dans l’Espace App > Produits > Instagram > Basic Display.

code
Obligatoire
Chaîne

AQBx-hBsH3...

Le code d’autorisation que nous vous avons fourni dans le paramètre code au moment de rediriger l’utilisateur vers votre redirect_uri.

grant_type
Chaîne
obligatoire

authorization_code

Définit cette valeur sur authorization_code.

redirect_uri
Obligatoire
Chaîne

https://socialsizzle. heroku.com/auth/

L’URI de redirection que vous nous avez fourni au moment de rediriger l’utilisateur vers notre fenêtre d’autorisation. Il doit s’agir du même URI, sans quoi nous rejetons la demande.

Exemple de requête

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id=990602627938098 \
  -F client_secret=eb8c7... \
  -F grant_type=authorization_code \
  -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \
  -F code=AQBx-hBsH3...

Exemple de réponse en cas de réussite

En cas de réussite, l’API renvoie une charge utile JSON contenant le token d’accès de courte durée et l’ID d’utilisateur de l’utilisateur de l’application.

{
  "access_token": "IGQVJ...",
  "user_id": 17841405793187218
}

Capturez la valeur access_token. Il s’agit du token d’accès de courte durée pour utilisateur Instagram que votre application peut utiliser pour accéder aux points de terminaison de l’API Basic Display d’Instagram.

Exemple de réponse en cas de rejet

Si la demande n’est pas correctement formée, l’API retourne une erreur.

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