La problématique

Aujourd'hui, nous allons regarder de plus près un réseau social (enfin il parait) qui traite d'un sujet que j'aoime tout particulièrement : la photo. Nous allons nous pencher sur les quelques API que nous propose Instagram. Oui oui Instagram. Si vous êtes comme moi, d'un âge canonique, je pense que vous aussi préférer un bon vieux FTP des famille avec un script style Piwigo pour présenter vos photos, mais il parait que c'est pas très "social". L'avantage c'est qu'on sait où sont nops propres photo. Instagram, c'est Facebook. Et Facebook a des horribles textes concernant les CGU, mais c'est une autre histoire...

Le servide interrogé : Instagram

Je ne le présente pas, insta, IG ou encore Instagr.am, ce service, ce site a plein de petits noms. Commee à notre habitude, nous allons voir ce que nosu pouvons faire a l'aide des ces API.
La première chose que je note, même si j'ai passé un petit peu de temps afin de bien comprendre, c'est que l'authentification à l'API est relativement simple. En effet, après s'être enregistré auprès d'Instagram, vous aurrez un compte développeur pour créer vos clefs API. Je tiens à souligner que, je pense pour des raisons de sécurité, au moment de l'enregistrement de votre compte développeur, vous allez être amener à renseigner deux onglets :
* Le premier onglet :

  • Un nom d'application
  • Une description de votre application
  • Le nom de votre entreprise
  • L'URL de votre site web en lien à votre compte instagram
  • Les URL de redirections valides (nous verrons ce que c'est)
  • L'URL de vos conditions d'urtilisation
  • Et enfin une adrese email

Le deuxième onglet :

  • La désactivation (par défaut) ou pas de 0Auth, le système d'authentification uniforme
  • Le fait que vos requetes soient signées ou pas

Mon rôle étant de démarrer et lanceer mes lecteurs, on va faire simple en laissant tout par défaut.

Récupérer un token d'accès

Je ne reviens pas sur ce qu'est un token d'accès, ou un jeton. Pour faire simple, c'est un jeton, tout comme les jetons de Token Ring, est un authentifiant qui a une authentification unique et une durée déterminée. On l'utilise pour lancer ses requetes sur un serveur, mais ayant une durée de vie limitée, il faut le "rafraichir", ou plutôt en demander un nouveau, régulièrement (généralement le temps d'une session).
La récupération du token se fait en lançant la requête http suivante :

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

Une fois cette requête lancée, vous aurez en retour votre token d'accès que vous réutiliserez au fil des requêtes. Particularité, ce token sous est retourné dans l'URL ! Il faut dont décortiquer votre URL pour le récupérer. (en php : $_GET)

Vous pouvez aussi utiliser site https://codeofninja.com/tools/find-instagram-user-id  qui vous retournera, pour peu que vous soyez connecté à Instagram, tout ce que vous aurez besoin

Et si on faisait un peu joujou ?

A la Prévert,
Voici un inventaire
De ce que l'on peut faire
(n'oubliez pas de renseigner [VOTRE ID CLIENT])

Récuperer les informations d'un utilisateur en le recherchant par son nom d'utilisateur

https://api.instagram.com/v1/users/search?q=microsoft&client_id=[VOTRE ID CLIENT]

Récupérer les 10 derniers posts et actions d'un utilisateur

http://api.instagram.com/v1/users/524549267/media/recent/?client_id=[VOTRE ID CLIENT]&count=10

Effectuer une recherche sur Instagram

https://api.instagram.com/v1/users/search?q=lhseb&client_id=[VOTRE ID CLIENT]
lhsebétant la chaine a rechercher, évidemment

Savoir ce qu'Instagram sait de moi

https://api.instagram.com/v1/users/self/?access_token=VOTRE-ACCESS-TOKEN

Mes activités récentes sur Instagram

https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS-TOKEN

Connaitre les derniers commentaires sur un média que j'ai publié

https://api.instagram.com/v1/media/{media-id}/comments?access_token=ACCESS-TOKEN

Retourne un XML contenant le lien d'intégration HTML

Ainsi que plein d'autres méta données sur le média

https://api.instagram.com/oembed/?url=https://www.instagram.com/p/{ID du média}/
Ex : https://api.instagram.com/oembed/?url=https://www.instagram.com/p/Bx4ximppLcz/

Récupérer le code HTML d'un média pour l'intégrer sur un site

https://api.instagram.com/oembed/?url=https://www.instagram.com/p/{ID du média}/
Ex : https://api.instagram.com/oembed/?url=https://www.instagram.com/p/Bx4ximppLcz/

Récuperer les POST récents

ATTENTION : pour que ca marche, il faut que la déclaration de votre API soit passée de DEV ) PROD. (Je vous donne le code mais je n'ai pas pu le tester car je n'ai pas pu passer en prod mon fichier de test)
https://api.instagram.com/v1/tags/snowy/media/recent?client_id={VOTRE ID CLIENT FOURNI DANS LA CONSOLE API}&access_token={VOTRE TOKEN D'ACCES}

Résultats

Pour tous les tests que j'ai pu faire, tous étaient concluants. Cette API est plutôt simple, un niveau d'authentification pas trop complexe pour le développeurs mais suffisant pour ne pas faire n'importe quoi. Bref, bel outil
Bon coding :)