Introduzione all'API di Instagram

Questo è il primo tutorial di una serie di messa a fuoco (nessun gioco di parole previsto) sull'API di Instagram. Instagram è il servizio di social media mobile fondato nel 2010 e acquisito da Facebook per $ 1 miliardo nel 2012. Ecco come si costruisce una startup!

Secondo Pew Research, il 26% di tutti gli adulti online utilizza Instagram. Inoltre, "circa la metà di Internet, utilizzando giovani adulti di età compresa tra 18 e 29 anni (53%), utilizza Instagram e la metà di tutti gli utenti (49%) utilizza il sito ogni giorno".

La popolarità, l'ubiquità e la bellezza visiva di Instagram ne fanno un'API avvincente e divertente da esplorare per gli sviluppatori. Ho scritto più di 90 tutorial per Tuts + e di gran lunga uno dei più interessanti è stata la parte su Instagram della mia precedente serie in due parti, Localating Potential Crime Scene Witnesses with Social Media APIs. In quel tutorial, abbiamo trovato testimoni oculari di un video di Macklemore girato più di due anni prima:

In questo tutorial, ti darò un'ampia panoramica di cosa puoi fare con l'API di Instagram e come iniziare. Nei prossimi episodi, ti guiderò attraverso una varietà di scenari utili che sfruttano l'API. In ogni episodio, fornirò un repository di codice con codice di esempio nel mio framework PHP preferito, Yii. Puoi imparare di più su Yii qui e nella mia programmazione con la serie Yii2 (Tuts +).

Parteciperò alle discussioni di seguito. Se hai una domanda o un suggerimento sull'argomento, per favore pubblica un commento qui sotto. Puoi anche raggiungermi su Twitter @reifman o mandarmi un'email direttamente.

Cosa puoi fare con l'API di Instagram? 

Oltre a trovare testimoni oculari, ci sono una miriade di altre cose che puoi fare con l'API versatile e potente di Instagram. Scopri gli 8 modi di Mashable per utilizzare l'API di Instagram. Si collegano anche ad alcuni servizi di terze parti interessanti che già utilizzano l'API:

  • Instaprint fornisce una stampante fotografica collegata a Instagram per i tuoi eventi.
  • Eventstagram fornisce visibilità pubblica e condivisione di media Instagram ai tuoi eventi.
  • Casetify ti consente di stampare cover di dispositivi personalizzate dal tuo account Instagram. 

Mentre le API dei servizi web vanno, l'API di Instagram è solida e, secondo la mia esperienza, funziona molto bene (meglio di Twitter). Inizierò fornendo un'ampia panoramica dell'API prima di approfondire.

Rivediamo gli endpoint.

Gli endpoint

Gli endpoint di Instagram rappresentano una varietà di URL di servizi Web basati su REST per accedere a gran parte delle funzionalità generali di Instagram.

utenti

L'endpoint Users consente di cercare gli utenti per nome, cercare informazioni di base su di essi e visualizzare i media nel loro newsfeed (le persone che seguono su Instagram), nonché i propri post media e i contenuti multimediali preferiti. Alcune di queste funzionalità richiedono l'autenticazione specifica dell'utente e altre possono essere utilizzate da qualsiasi sviluppatore.

Le relazioni

L'endpoint Relationships consente di recuperare gli elenchi follower (sia chi segue un utente e chi sono seguiti da) sia rispondere alle richieste di relazioni e apportare modifiche alle relazioni.

Media

Con l'endpoint multimediale, è possibile recuperare informazioni su una foto o un video Instagram. Fornisce inoltre funzionalità di geosearch per trovare i media pubblicati da un momento e luogo specifici, come abbiamo fatto in Individuazione dei testimoni di scena del crimine potenziale con le API dei social media. Consente inoltre di recuperare i post più popolari su Instagram. 

Ecco un estratto del codice JSON per una risposta di esempio a https://api.instagram.com/v1/media/popular?access_token=ACCESS-TOKEN:

"data": ["type": "image", "users_in_photo": [], "filter": "Gotham", "tags": [], "comments": ..., "caption":  "created_time": "1296656006", "text": "ã ???? ã ???????????????????????? ? ã ???ä ã ???? (^^) "," da ": " username ":" cocomiin "," full_name ":" "," tipo ":" utente "," id ":" 1127272 "," id ":" 26329105 "," likes ": " count ": 35," data ": [" nome utente ":" mikeyk "," full_name ":" Kevin S "," id ":" 4 "," profile_picture ":" ... ", ... sottoinsieme di likers ...]," link ":" http: / /instagr.am/p/BV5v_/ "," utente ": " username ":" cocomiin "," full_name ":" Cocomiin "," profile_picture ":" http://distillery.s3.amazonaws.com/profiles /profile_1127272_75sq_1296145633.jpg "," id ":" 1127272 "," created_time ":" 1296655883 "," images ": " low_resolution ": " url ":" http://distillery.s3.amazonaws.com/ media / 2011/02/01 / 34d027f155204a1f98dde38649a752ad_6.jpg "," larghezza ": 306," altezza ": 306," miniatura ": " url ":" http://distillery.s3.amazonaws.com/media/ 2011/02 /01/34d027f155204a1f98dde38649a752ad_5.jpg "," larghezza ": 150," altezza ": 150," standard_resolution ": " url ":" http://distillery.s3.amazonaws.com/media/2011/02/01 /34d027f155204a1f98dde38649a752ad_7.jpg "," larghezza ": 612," altezza ": 612," id ":" 22518783 "," posizione ": null,

Commenti, Mi piace e Tag

Come ti aspetteresti, i commenti, i Mi piace e i Taggli endpoint consentono di enumerare commenti, Mi piace e tag per gli elementi multimediali nonché applicarli (o non applicarli) ai media.

Ad esempio, ecco una risposta di esempio alle query per i media taggati "neve" utilizzando l'endpoint https://api.instagram.com/v1/tags/snow/media/recent?access_token=ACCESS-TOKEN:

"data": ["type": "image", "users_in_photo": [], "filter": "Earlybird", "tags": ["snow"], "comments": "data": [ "created_time": "1296703540", "text": "Snow", "from": "username": "emohatch", "username": "Dave", "id": "1242695", "id" : "26589964", "created_time": "1296707889", "text": "#snow", "from": "username": "emohatch", "username": "Emo Hatch", "id": "1242695", "id": "26609649"], "count": 3 "caption": "created_time": "1296703540", "text": "#Snow", "from": "username ":" emohatch "," id ":" 1242695 "," id ":" 26589964 "," likes ": " count ": 1," data ": [" username ":" mikeyk "," full_name ":" Mike Krieger "," id ":" 4 "," profile_picture ":" http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg "]," link ":" http: //instagr.am/p/BWl6P/ "," user ": " username ":" emohatch "," profile_picture ":" http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg "," id ":" 1242695 "," full_name ":" Dave "," created_time ":" 1296703536 "," i mages ": " low_resolution ": " url ":" http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_6.jpg "," larghezza ": 306," altezza ": 306 , "thumbnail": "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_5.jpg", "larghezza": 150, "altezza": 150, "standard_resolution": "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_7.jpg", "width": 612, "height": 612, " id ":" 22699663 "," location ": null, " type ":" video "," videos ": " low_resolution ": " url ":" http: //distilleryvesper9-13.ak.instagram. it / 090d06dad9cd11e2aa0912313817975d_102.mp4 "," width ": 480," height ": 480," standard_resolution ": " url ":" http://distilleryvesper9-13.ak.instagram.com/090d06dad9cd11e2aa0912313817975d_101.mp4 "," width ": 640," height ": 640," users_in_photo ": null," filter ":" Vesper "," tags ": [" snow "]," comments ": " data ": [" created_time " : "1279332030", "testo": "Ama il segno qui", "da": "utentena me ":" mikeyk "," full_name ":" Mikey Krieger "," id ":" 4 "," profile_picture ":" http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg "," id ":" 8 ", " created_time ":" 1279341004 "," text ":" Chilako taco "," from ": " username ":" kevin "," full_name ":" Kevin S "," id ":" 3 "," profile_picture ":" ... "," id ":" 3 "]," count ": 2," caption ": null," likes ": " count ": 1," data ": [" username ":" mikeyk "," full_name ":" Mikeyk "," id ":" 4 "," profile_picture ":" ... "]," link ":" http: // instagr .am / p / D / "," user ": " username ":" kevin "," full_name ":" Kevin S "," profile_picture ":" ... "," id ":" 3 "," created_time ":" 1279340983 "," images ": " low_resolution ": " url ":" http://distilleryimage2.ak.instagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_6.jpg "," larghezza ": 306," altezza ": 306 , "thumbnail": "url": "http://distilleryimage2.ak.instagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_5.jpg", "larghezza": 150, "altezza": 150, "standard_resolution": "url": "http: //distilleryimage2.ak.i nstagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_7.jpg "," width ": 612," height ": 612," id ":" 3 "," location ": null, ...]

sedi

Le API dei servizi sociali come Twitter e Instagram hanno i propri database di Place. Instagram chiama queste posizioni. Gli endpoint di posizione consentono di cercare gli ID di località nel servizio Instagram tramite coordinate GPS e di trovare i supporti pubblicati da tali ID di posizione.

Ecco una query di esempio per località note (o luoghi) vicino alle coordinate GPS della Torre Eiffel: 

Instagram restituisce i suoi ID di posizione nativi per luoghi noti nelle vicinanze. Ad esempio, è possibile utilizzarlo con altre query di posizione per trovare post multimediali da Restaurant 58 Tour Eiffel. 

Autenticazione

Una volta registrata la tua applicazione sviluppatore, puoi fare un'ampia varietà di richieste usando solo la tua chiave d'accesso. Tuttavia, per proteggere endpoint specifici e fornire informazioni sugli utenti privati, l'API di Instagram utilizza il protocollo OAuth 2.0 per l'autenticazione.

Ecco un esempio di utilizzo di OAuth dalla console API (descritta di seguito):

L'accesso OAuth predefinito è di sola lettura, ma Instagram ti consente di chiedere all'utente di aggiungere altre autorizzazioni tramite questi ambiti:

  • Commenti: per creare o eliminare commenti per conto di un utente (questa autorizzazione è limitata solo alle app approvate).
  • rapporti: seguire e smettere di seguire gli utenti per conto dell'utente.
  • Piace: per piacere e diversamente da oggetti per conto di un utente.

Puoi imparare di più sull'implementazione di OAuth di Instagram ora o attendere i prossimi episodi di questa serie. 

Servizi in tempo reale

Con l'API Real-Time di Instagram, puoi iscriverti agli eventi per monitorare le attività in tempo reale per utenti, tag, posizioni (ID luogo nativo di Instagram) e aree GPS:

  • utenti: ricevi notifiche quando gli utenti che si sono registrati con la tua applicazione pubblicano nuove foto. Ciò richiede l'autenticazione con la tua applicazione.
  • tag: ricevi notifiche quando una nuova foto viene taggata con tag di tua scelta.
  • sedi: ricevere notifiche quando vengono pubblicate nuove foto e contrassegnate con una posizione specifica (luogo ID).
  • geografie: ricevere notifiche quando vengono pubblicate nuove foto in una posizione geografica arbitraria definita da un punto centrale e raggio.

Per l'accesso in tempo reale, Instagram suggerisce di utilizzare Tornado o Node.js. basati su Python. Probabilmente ci sono anche lezioni che puoi imparare da Phirehose, il framework Twitter in tempo reale costruito in PHP.

Per gli aggiornamenti in tempo reale, si registra un proprio endpoint di callback, ad es. un URL. Ecco un esempio di post degli aggiornamenti delle sottoscrizioni da Instagram a un endpoint di callback:

["subscription_id": "1", "oggetto": "utente", "object_id": "1234", "changed_aspect": "media", "time": 1297286541, "subscription_id": "2", "oggetto": "tag", "object_id": "nofilter", "changed_aspect": "media", "time": 1297286541, ...]

Il primo è un nuovo post sui media di un feed utente a cui sei iscritto. Il secondo è un nuovo post multimediale per un abbonamento di tag.

La console API

Per aiutarti a iniziare e eseguire il debug, Instagram ha una console API supportata da Apigee:

Puoi anche condividere e incorporare i risultati:

Segnalazione di bug

Dopo esserti registrato come sviluppatore, puoi facilmente segnalare problemi API al team di Instagram:

Quali piattaforme supporta l'API di Instagram?

Puoi accedere all'API di Instagram con qualsiasi piattaforma utilizzando i suoi endpoint REST. Instagram fornisce librerie per Python e Ruby. Packagist offre una serie di librerie di community per Instagram per PHP. IBM ha anche una guida per usare vanilla PHP con Instagram.

Codice della strada

Condizioni d'uso

Gli utenti di Instagram mantengono la proprietà delle proprie foto e video. Poiché il copyright è essenziale per il copyright, Instagram afferma: "È tua responsabilità assicurarti di rispettare tale diritto". 

Inoltre, non ti è permesso replicare l'esperienza dell'applicazione Instagram. Innovare invece.

Prima di iniziare a utilizzare l'API, abbiamo alcune linee guida di cui vorremmo parlarti. Puoi leggere qui i Termini d'uso completi dell'API.

Limiti di velocità

Come con qualsiasi API di servizi Web, esistono limiti di velocità che è necessario rispettare o bloccare. Ad esempio, le applicazioni sono limitate a 5.000 chiamate all'ora.

Qual'è il prossimo?

Spero che ti incuriosisca iniziare a utilizzare l'API di Instagram. Nella prossima puntata, ti guiderò attraverso tutto il necessario per iniziare a fare richieste di endpoint. Se desideri iniziare immediatamente, puoi controllare Individuazione dei testimoni potenziali della scena del crimine con le API dei social media. 

Non esitate a postare le vostre domande e commenti qui sotto. Puoi anche raggiungermi su Twitter @reifman o mandarmi un'email direttamente. Puoi anche sfogliare la mia pagina di istruttori + tutor per vedere altri tutorial che ho scritto. 

Link correlati

  • Instagram
  • L'API di Instagram
  • Il blog degli sviluppatori di Instagram
  • Individuazione di potenziali testimoni della scena del crimine con le API dei social media