Introductie van de Instagram API

Dit is de eerste zelfstudie van een reeks die focust (geen woordspeling bedoeld) op de Instagram API. Instagram is de mobiele sociale fotografiedienst die in 2010 werd opgericht en door Facebook werd overgenomen voor $ 1 miljard in 2012. Dat is hoe je een startup bouwt!

Volgens Pew Research gebruikt 26% van alle online volwassenen Instagram. Bovendien: "grofweg de helft van de internetgebruikers van jongvolwassen kinderen tussen 18 en 29 jaar oud (53%) gebruikt Instagram en de helft van alle gebruikers (49%) gebruikt de site dagelijks."

De populariteit, alomtegenwoordigheid en visuele schoonheid van Instagram maken het een aantrekkelijke en leuke API voor ontwikkelaars om te verkennen. Ik heb meer dan 90 tutorials voor Tuts + geschreven en veruit een van de meest interessante was het Instagram-gedeelte van mijn eerdere tweedelige serie, Locating Potential Crime Scene Witnesses With Social Media API's. In die tutorial ontdekten we meer dan twee jaar eerder ooggetuigen van een Macklemore-videoshoot:

In deze zelfstudie geef ik u een uitgebreid overzicht van wat u kunt doen met de Instagram-API en hoe u aan de slag kunt gaan. In toekomstige afleveringen zal ik u een aantal bruikbare scenario's laten zien die gebruikmaken van de API. In elke aflevering zal ik een coderepository voorzien van voorbeeldcode in mijn favoriete PHP-framework, Yii. U kunt hier meer leren over Yii en in mijn Programming With Yii2-serie (Tuts +).

Ik neem wel deel aan de onderstaande discussies. Als je een vraag of een suggestie voor een onderwerp hebt, plaats dan een commentaar hieronder. Je kunt me ook bereiken via Twitter @reifman of mij rechtstreeks een e-mail sturen.

Wat kan je doen met de Instagram API? 

Naast het vinden van ooggetuigen, zijn er nog een hele reeks andere dingen die je kunt doen met de veelzijdige en krachtige API van Instagram. Bekijk de API van Mashable voor 8 manieren om Instagram te gebruiken. Ze linken ook naar enkele interessante services van derden die de API al gebruiken:

  • Instaprint biedt een op Instagram aangesloten fotoprinter voor uw evenementen.
  • Eventstagram biedt publieke weergave en het delen van Instagram media op uw evenementen.
  • Casetify laat je eigen apparaatbedekkingen afdrukken vanuit je Instagram-account. 

Naarmate de API's voor webdiensten beter gaan werken, is de Instagram-API robuust en werkt het in mijn ervaring prima (beter dan die van Twitter). Ik zal beginnen met een uitgebreid overzicht van de API voordat ik dieper inga.

Laten we de eindpunten bekijken.

De eindpunten

De eindpunten van Instagram vertegenwoordigen een aantal REST-gebaseerde webservice-URL's om toegang te krijgen tot de algemene functionaliteit van Instagram.

gebruikers

Met het eindpunt Gebruikers kunt u gebruikers op naam zoeken, basisinformatie over hen opzoeken en de media in hun nieuwsfeed bekijken (mensen die ze op Instagram volgen), evenals hun eigen mediaberichten en populaire media. Sommige van deze functies vereisen de specifieke authenticatie van de gebruiker en andere kunnen door elke ontwikkelaar worden gebruikt.

Relaties

Met het eindpunt Relaties kunt u volglijsten ophalen (zowel wie een gebruiker volgt en gevolgd door wie) als reageren op verzoeken om relaties en wijzigingen aanbrengen in relaties.

Media

Met het Media-eindpunt kunt u informatie over een Instagram-foto of -video ophalen. Het biedt ook geosearch-mogelijkheden om media te vinden die gepost zijn van een specifieke tijd en plaats, zoals we deden bij het lokaliseren van potentiële criminaliteitscène-Getuigen met API's voor sociale media. Je kunt ook populaire Instagram-berichten ophalen. 

Hier is een uittreksel van JSON-code voor een voorbeeldantwoord op 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": "ã ???? ã ?? ¼ã ???? â ?? ¥ ã ?? ã ã ???? ã ?? ªå§ ?? ã ??? ? ã ?? |使ã ?? £ ã ?? |ã ?? ¿ã ???? ã ???? (^^) "," from ": " gebruikersnaam ":" cocomiin "," full_name ":" "," type ":" user "," id ":" 1127272 "," id ":" 26329105 "," likes ": " count ": 35," data ": [" gebruikersnaam ":" mikeyk "," volledige naam ":" Kevin S "," id ":" 4 "," profile_picture ":" ... ", ... subset van likers ...]," link ":" http: / /instagr.am/p/BV5v_/ "," user ": " gebruikersnaam ":" 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 "," width ": 306," height ": 306," thumbnail ": " url ":" http://distillery.s3.amazonaws.com/media/ 2011/02 /01/34d027f155204a1f98dde38649a752ad_5.jpg "," width ": 150," height ": 150," standard_resolution ": " url ":" http://distillery.s3.amazonaws.com/media/2011/02/01 /34d027f155204a1f98dde38649a752ad_7.jpg "," width ": 612," height ": 612," id ":" 22518783 "," location ": null,

Reacties, vind-ik-leuks en tags

Zoals je zou verwachten, de Comments, Likes en TagsMet eindpunten kunt u opmerkingen, vind-ik-leuks en tags voor media-items opsommen en toepassen (of niet toepassen) op media.

Dit is bijvoorbeeld een voorbeeldantwoord op het zoeken naar media met de tag "snow" met behulp van het eindpunt https://api.instagram.com/v1/tags/snow/media/recent?access_token=ACCESS-TOKEN:

"data": ["type": "image", "users_in_photo": [], "filter": "Earlybird", "tags": ["sneeuw"], "comments": "data": [ "created_time": "1296703540", "text": "Snow", "from": "gebruikersnaam": "emohatch", "username": "Dave", "id": "1242695", "id" : "26589964", "created_time": "1296707889", "text": "#snow", "from": "gebruikersnaam": "emohatch", "username": "Emo Hatch", "id": "1242695", "id": "26609649"], "count": 3 "caption": "created_time": "1296703540", "text": "#Snow", "from": "gebruikersnaam ":" emohatch "," id ":" 1242695 "," id ":" 26589964 "," likes ": " count ": 1," data ": [" username ":" mikeyk "," volledige naam: Mike Krieger, id, 4, profiel_picture //instagr.am/p/BWl6P/ "," user ": " gebruikersnaam ":" emohatch "," profile_picture ":" http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg "," id ":" 1242695 "," volledige naam ":" Dave "," created_time ":" 1296703536 "," i mages ": " low_resolution ": " url ":" http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_6.jpg "," width ": 306," height ": 306 , "thumbnail": "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_5.jpg", "width": 150, "height": 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. com / 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", "text": "Love the sign here", "from": "userna mij ":" mikeyk "," volledige naam ":" 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 ": " gebruikersnaam ":" 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 / "," gebruiker ": " gebruikersnaam ":" kevin "," volledige naam ":" Kevin S "," profile_picture ":" ... "," id ":" 3 "," created_time ":" 1279340983 "," images ": " low_resolution ": " url ":" http://distilleryimage2.ak.instagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_6.jpg "," width ": 306," height ": 306 , "thumbnail": "url": "http://distilleryimage2.ak.instagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_5.jpg", "width": 150, "height": 150, "standard_resolution": "url": "http: //distilleryimage2.ak.i nstagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_7.jpg "," width ": 612," height ": 612," id ":" 3 "," location ": null, ...]

locaties

Sociale dienst-API's zoals Twitter en Instagram hebben hun eigen Place-databases. Instagram noemt deze locaties. Met de locatie-eindpunten kunt u locatie-ID's in de Instagram-service opzoeken op basis van een GPS-coördinaat en media vinden die zijn gepost van die locatie-ID's.

Hier is een voorbeeldquery voor bekende locaties (of plaatsen) bij de GPS-coördinaten van de Eiffeltoren: 

Instagram retourneert de native locatie-ID's voor bekende plaatsen in de buurt. U kunt dit bijvoorbeeld bij andere locatiequery's gebruiken om mediaberichten van Restaurant 58 Tour Eiffel te vinden. 

authenticatie

Nadat u uw ontwikkelaarstoepassing hebt geregistreerd, kunt u een grote verscheidenheid aan verzoeken doen met alleen uw toegangssleutel. Voor het beveiligen van specifieke eindpunten en het verstrekken van persoonlijke gebruikersinformatie, gebruikt Instagram's API het OAuth 2.0-protocol voor authenticatie.

Hier is een voorbeeld van het gebruik van OAuth uit de API-console (hieronder beschreven):

De standaard OAuth-toegang is alleen-lezen, maar op Instagram kun je de gebruiker vragen om via deze scopes andere rechten toe te voegen:

  • reacties: om opmerkingen namens een gebruiker te maken of verwijderen (deze toestemming is beperkt tot goedgekeurde apps).
  • Relaties: om gebruikers namens een gebruiker te volgen en te ontvolgen.
  • Likes: om items leuk te vinden en in tegenstelling tot items namens een gebruiker.

Je kunt nu meer leren over de implementatie van Instagram's OAuth, of wachten op komende afleveringen van deze serie. 

Realtime services

Met de Instagram Real-Time API kun je je abonneren op evenementen om live activiteiten te volgen voor gebruikers, tags, locaties (Instagram's native place ID's) en GPS-gebieden:

  • gebruikers: meldingen ontvangen wanneer gebruikers die zich bij uw toepassing hebben geregistreerd, nieuwe foto's plaatsen. Dit vereist authenticatie met uw applicatie.
  • Tags: meldingen ontvangen wanneer een nieuwe foto is gelabeld met tags van uw keuze.
  • locaties: meldingen ontvangen wanneer nieuwe foto's worden gepost en getagd met een specifieke locatie (plaats-ID).
  • geographies: meldingen ontvangen wanneer nieuwe foto's op een willekeurige geografische locatie worden geplaatst, zoals gedefinieerd door een middelpunt en een straal.

Voor real-time toegang, suggereert Instagram het gebruik van op Python gebaseerde Tornado of Node.js. Er zijn waarschijnlijk ook lessen die je kunt leren van Phirehose, het realtime Twitter-framework dat is gebouwd in PHP.

Voor real-time updates registreert u een eigen callback-eindpunt, bijvoorbeeld een URL. Hier is een voorbeeld van abonnementsupdates van Instagram naar een callback-eindpunt:

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

De eerste is een nieuwe mediapost door een gebruikersfeed waarop u bent geabonneerd. De tweede is een nieuwe mediapost voor een tagabonnement.

De API-console

Om u te helpen aan de slag en te debuggen, heeft Instagram een ​​API-console, mogelijk gemaakt door Apigee:

U kunt de resultaten ook delen en insluiten:

Bugs melden

Nadat u zich hebt geregistreerd als ontwikkelaar, kunt u eenvoudig API-problemen rapporteren aan het Instagram-team:

Welke platforms ondersteunt de Instagram API??

Je kunt de Instagram-API openen met elk platform met behulp van de REST-eindpunten. Instagram biedt bibliotheken voor Python en Ruby. Packagist biedt een aantal communitybibliotheken voor Instagram voor PHP. IBM heeft ook een handleiding voor het gebruik van vanilla PHP met Instagram.

Verkeersregels

Gebruiksvoorwaarden

Instagram-gebruikers behouden het eigendom van hun foto's en video's. Omdat copyright zo essentieel is voor auteursrechten, zegt Instagram: "Het is jouw verantwoordelijkheid om ervoor te zorgen dat je dat recht respecteert." 

Het is ook niet toegestaan ​​om de Instagram-toepassingservaring te repliceren. Innoveren in plaats daarvan.

Voordat u de API gaat gebruiken, hebben we enkele richtlijnen waarover we u graag willen vertellen. U kunt hier de volledige API-gebruiksvoorwaarden lezen.

Tarieflimieten

Net als bij elke webservices-API gelden er tarieflimieten waaraan u zich moet houden of die u moet blokkeren. Toepassingen zijn bijvoorbeeld beperkt tot 5000 oproepen per uur.

Wat is het volgende?

Ik hoop dat je geïntrigeerd bent om de Instagram API te gaan gebruiken. In de volgende aflevering zal ik je helpen met het maken van eindpuntverzoeken door alles wat je nodig hebt om aan de slag te gaan. Als je meteen aan de slag wilt, kun je Locaties van Potentiële misdaadscène-getuigen met sociale media-API's bekijken. 

Aarzel niet om uw vragen en opmerkingen hieronder te plaatsen. Je kunt me ook bereiken via Twitter @reifman of mij rechtstreeks een e-mail sturen. Je kunt ook bladeren door mijn Tuts + instructeur-pagina om andere tutorials te bekijken die ik heb geschreven. 

Gerelateerde Links

  • Instagram
  • De Instagram-API
  • Het blog met Instagram-ontwikkelaars
  • Potentiële misdaadscène-getuigen lokaliseren met API's voor sociale media