Dies ist das erste Tutorial einer Serienfokussierung (kein Wortspiel beabsichtigt) auf der Instagram API. Instagram ist der mobile Social-Photography-Service, der 2010 gegründet wurde und 2012 von Facebook für 1 Milliarde US-Dollar erworben wurde. So bauen Sie ein Startup!
Laut Pew Research nutzen 26% aller Erwachsenen im Erwachsenenalter Instagram. Außerdem "verwendet etwa die Hälfte der jungen Erwachsenen im Alter zwischen 18 und 29 Jahren (53%), die das Internet nutzen, Instagram. Und die Hälfte aller Nutzer (49%) nutzt die Website täglich."
Die Beliebtheit, Allgegenwart und visuelle Schönheit von Instagram machen es zu einer fesselnden und unterhaltsamen API für Entwickler. Ich habe mehr als 90 Tutorials für Tuts + geschrieben und einer der interessantesten war der Instagram-Teil meiner früheren zweiteiligen Serie "Potenzielle Zeugen Crime-Szene mit Social-Media-APIs suchen". In diesem Tutorial fanden wir vor mehr als zwei Jahren Augenzeugen eines Macklemore-Videoshootings:
In diesem Tutorial gebe ich Ihnen einen umfassenden Überblick darüber, was Sie mit der Instagram-API erreichen können und wie Sie damit beginnen. In zukünftigen Episoden werde ich Sie durch verschiedene nützliche Szenarien führen, die die API nutzen. In jeder Episode werde ich ein Code-Repository mit Beispielcode in meinem bevorzugten PHP-Framework Yii bereitstellen. Mehr über Yii erfahren Sie hier und in meiner Programmierung mit der Yii2-Serie (Tuts +)..
Ich nehme an den Diskussionen unten teil. Wenn Sie eine Frage oder ein Thema haben, schreiben Sie bitte einen Kommentar. Sie können mich auch auf Twitter @reifman erreichen oder mich direkt per E-Mail kontaktieren.
Neben der Suche nach Augenzeugen gibt es noch eine Vielzahl anderer Möglichkeiten, die Sie mit der vielseitigen und leistungsfähigen API von Instagram tun können. Schauen Sie sich die 8 Möglichkeiten von Mashable zur Verwendung der Instagram-API an. Sie sind auch mit einigen interessanten Drittanbieter-Diensten verbunden, die bereits die API verwenden:
Bei den Web-Service-APIs ist die Instagram-API robust und funktioniert nach meiner Erfahrung sehr gut (besser als die von Twitter). Ich fange damit an, einen umfassenden Überblick über die API zu geben, bevor ich tiefer gehe.
Lassen Sie uns die Endpunkte überprüfen.
Die Endpunkte von Instagram repräsentieren eine Vielzahl von REST-basierten Web-Service-URLs für den Zugriff auf viele Funktionen von Instagram.
Mit dem Benutzerendpunkt können Sie Benutzer nach Namen suchen, grundlegende Informationen über sie suchen und die Medien in ihrem Newsfeed (Personen, denen sie auf Instagram folgen) sowie ihre eigenen Medienbeiträge und beliebte Medien anzeigen. Einige dieser Funktionen erfordern die spezifische Authentifizierung des Benutzers und andere können von jedem Entwickler verwendet werden.
Mit dem Beziehungsendpunkt können Sie Follower-Listen abrufen (sowohl wer ein Benutzer folgt als auch denen, denen er folgt) sowie auf Beziehungsanforderungen reagieren und Änderungen an Beziehungen vornehmen.
Mit dem Medienendpunkt können Sie Informationen zu einem Instagram-Foto oder -Video abrufen. Es bietet auch Geosearch-Funktionen zum Auffinden von Medien, die zu einem bestimmten Zeitpunkt und an einem bestimmten Ort gepostet werden, wie wir dies beim Auffinden potenzieller Zeugen von Verbrechensszenen mit Social-Media-APIs getan haben. Außerdem können Sie beliebte Instagram-Beiträge abrufen.
Hier ist ein Auszug des JSON-Codes für eine Beispielantwort 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": "ã ???? ã ?? ¼ã ?????????????????????????????????????????????????????????? ? ã ?? ¦ä½¿ã ?? £ ã ?? ¦ã ?? ¿???? ã ???? (^^) "," von ": " username ":" cocomiin "," vollständiger_name ":" "," type ":" Benutzer "," id ":" 1127272 "," id ":" 26329105 "," likes ": " count ": 35," data ": [" username ":" mikeyk "," full_name ":" Kevin S "," id ":" 4 "," profile_picture ":"… ", … Teilmenge der Freunde…]," link ":" http: / /instagr.am/p/BV5v_/ "," user ": " username ":" cocomiin "," full_name ":" Cocomiin "," profile_picture ":" http://distillery.s3.amazonaws.com/profiles /profile_1127272_75sq_1296145633.jpg "," id ":" 1127272 "," create_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,
Wie zu erwarten, die Kommentare, Likes und TagsMit Endpunkten können Sie Kommentare, Likes und Tags für Medienelemente auflisten sowie diese auf Medien anwenden (oder deren Zuordnung aufheben).
Im Folgenden finden Sie eine Beispielantwort für das Abfragen der Medien mit dem Tag "snow" unter Verwendung des Endpunkts 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", "von": "Benutzername": "emohatch", "Benutzername": "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 "," 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. de / 090d06dad9cd11e2aa0912313817975d_102.mp4 "," width ": 480," height ": 480," standard_resolution ": " url ":" http://distilleryvesper9-13.ak.instagram.com/090d0cd11ad04d04d10a04d10a09 width ": 640," height ": 640," users_in_photo ": null," filter ":" Vesper "," tags ": [" snow "]," comments ": " data ": [" Created_time " : "1279332030", "text": "Liebe das Zeichen hier", "von": "userna 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 "," von ": " 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 "," 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,…]
Social Service-APIs wie Twitter und Instagram verfügen über eigene Place-Datenbanken. Instagram nennt diese Standorte. Mit den Standortendpunkten können Sie Standort-IDs im Instagram-Dienst über GPS-Koordinaten abrufen und nach Medien suchen, die von diesen Standort-IDs bereitgestellt werden.
Hier eine Beispielabfrage nach bekannten Orten (oder Orten) in der Nähe der GPS-Koordinaten des Eiffelturms:
Instagram gibt seine Heimat-IDs für bekannte Orte in der Nähe zurück. Sie können dies beispielsweise bei anderen Standortabfragen verwenden, um Medienbeiträge aus Restaurant 58 Tour Eiffel zu finden.
Wenn Sie Ihre Entwickleranwendung registriert haben, können Sie eine Vielzahl von Anforderungen nur mit Ihrem Zugriffsschlüssel erstellen. Zur Sicherung bestimmter Endpunkte und zur Bereitstellung privater Benutzerinformationen verwendet die Instagram-API das OAuth 2.0-Protokoll für die Authentifizierung.
Hier ein Beispiel für die Verwendung von OAuth aus der API-Konsole (weiter unten beschrieben):
Der Standardzugriff für OAuth ist schreibgeschützt. Mit Instagram können Sie den Benutzer jedoch bitten, weitere Berechtigungen über die folgenden Bereiche hinzuzufügen:
Sie können jetzt mehr über die Implementierung von Instagram OAuth erfahren oder auf kommende Episoden dieser Serie warten.
Mit der Instagram-Echtzeit-API können Sie Ereignisse abonnieren, um Live-Aktivitäten für Benutzer, Tags, Standorte (die nativen Orts-IDs von Instagram) und GPS-Bereiche zu überwachen:
Für den Echtzeitzugriff schlägt Instagram die Verwendung von Tornado oder Node.js auf Python-Basis vor. Wahrscheinlich gibt es auch Lektionen, die Sie von Phirehose lernen können, dem in PHP integrierten Echtzeit-Twitter-Framework.
Für Echtzeit-Updates registrieren Sie einen eigenen Callback-Endpunkt, z. eine URL Hier ist ein Beispiel-Post von Abonnement-Updates von Instagram zu einem Callback-Endpunkt:
["subscription_id": "1", "object": "user", "object_id": "1234", "changed_aspect": "media", "time": 1297286541, "Subscribe_id": "2", "object": "tag", "object_id": "nofilter", "changed_aspect": "media", "time": 1297286541,…]
Der erste ist ein neuer Medienbeitrag eines von Ihnen abonnierten Benutzer-Feeds. Der zweite ist ein neuer Medienbeitrag zu einem Tag-Abonnement.
Um Ihnen den Einstieg und das Debugging zu erleichtern, verfügt Instagram über eine API-Konsole, die von Apigee unterstützt wird:
Sie können die Ergebnisse auch teilen und einbetten:
Sobald Sie sich als Entwickler registriert haben, können Sie API-Probleme einfach dem Instagram-Team melden:
Sie können von jeder Plattform aus auf die Instagram-API zugreifen, indem Sie die REST-Endpunkte verwenden. Instagram bietet Bibliotheken für Python und Ruby. Packagist bietet eine Reihe von Community-Bibliotheken für Instagram für PHP an. IBM hat auch eine Anleitung zur Verwendung von Vanilla PHP mit Instagram.
Instagram-Nutzer behalten das Eigentum an ihren Fotos und Videos. Da das Urheberrecht für das Urheberrecht so wichtig ist, sagt Instagram: "Es liegt in Ihrer Verantwortung, dafür zu sorgen, dass Sie dieses Recht respektieren."
Sie dürfen die Instagram-Anwendungserfahrung auch nicht replizieren. Stattdessen zu innovieren.
Bevor Sie mit der Verwendung der API beginnen, haben wir einige Richtlinien, über die wir Sie informieren möchten. Sie können die vollständigen API-Nutzungsbedingungen hier lesen.
Wie bei jeder Web-Services-API gibt es Ratenlimits, die Sie einhalten oder blockieren müssen. Beispielsweise sind Anwendungen auf 5.000 Anrufe pro Stunde beschränkt.
Ich hoffe, Sie sind neugierig darauf, die Instagram-API zu verwenden. In der nächsten Episode werde ich Sie durch alles führen, was Sie benötigen, um Endpunktanfragen zu erstellen. Wenn Sie sofort loslegen möchten, können Sie nach potenziellen Tatortzeugen mit Social Media-APIs suchen.
Bitte zögern Sie nicht, unten Ihre Fragen und Kommentare zu posten. Sie können mich auch auf Twitter @reifman erreichen oder mich direkt per E-Mail kontaktieren. Sie können auch meine Tuts + Instructor-Seite durchsuchen, um andere Tutorials zu sehen, die ich geschrieben habe.