Aceasta este partea a doua a unei serii despre API-ul Instagram. În acest tutorial, vă vom îndruma folosind Punctele finale Media Instagram, care vă permit să căutați imagini populare dintr-un anumit moment și loc.
Puteți descărca codul pentru fiecare episod utilizând link-ul de depozit GitHub din bara laterală. Ați putea fi, de asemenea, interesat de seria Tuts + din două părți, localizarea potențialilor criminali cu ajutorul API-urilor media sociale.
Codul pentru aceste tutoriale este scris în PHP folosind framework-ul Yii. Puteți afla mai multe despre Yii în Introducere în Cadrul Yii (Tuts +) și în Programarea cu Yii2 Series (Tuts +). De asemenea, puteți adapta cu ușurință segmentele de cod pentru propria aplicație PHP.
Particip la discuții. Dacă aveți o sugestie de întrebare sau subiect, vă rugăm să postați un comentariu de mai jos. Puteți să mă contactați și pe Twitter @reifman sau să mă trimiteți direct prin e-mail.
Să începem prin înregistrarea ca dezvoltator cu Instagram.
Pentru a începe, vizitați pagina API Instagram pentru dezvoltatori și dați clic pe Înregistrați-vă cererea:
Va trebui să vă înscrieți pentru un cont de dezvoltator:
Apoi, puteți înregistra o nouă aplicație pentru a primi codul dvs. de client:
Pe Gestionați clienții tablou de bord, veți vedea dvs. ID-ul clientului și Secretul clientului, deci ia notă de acestea:
Ca API-uri de servicii web, API-ul Instagram este robust și, din experiența mea, funcționează foarte bine. Instagram oferă o mulțime de puncte finale API:
Pentru acest tutorial, ne vom concentra pe Obiectivele media:
Cu obiectivele Media, puteți prelua informații despre o fotografie sau un videoclip Instagram prin referirea la ID-ul său sau la codul scurt de la adresa URL, de ex. 0EyZ53Ja9X din https://instagram.com/p/0EyZ53Ja9X. Acesta oferă, de asemenea, capabilități geosearch pentru a găsi mass-media postate dintr-un anumit moment și loc, așa cum am făcut-o în Localizarea potențialilor criminali de criminali cu API social media. Și, în cele din urmă, vă permite să preluați posturi populare, în curs de dezvoltare, de la Instagram.
Pentru a vă ajuta să începeți și să depanați, Instagram are o consola API alimentată de Apigee:
Puteți încerca interogări împotriva punctelor finale Media folosind consola API. Iată un exemplu de rezultat pentru mass-media / popular:
Evident, puteți vedea cât de util este lucrul cu mass-media din serviciul popular de fotografie mobil.
Să trecem la instalarea exemplului de bază de coduri și configurarea acestuia pentru a funcționa împreună cu aplicația dvs. client Instagram.
Pentru această serie, voi continua să construiesc baza de coduri de martori oculari de la localizarea potențialilor criminali de la martorii scenei cu API-urile sociale. Puteți clona depozitul GitHub situat în bara laterală pentru a rula codul nostru de probă.
cd ~ / Sites / eyew https://github.com/link-in-sidebar/eyew.git
Va trebui să configurați configurația locală Apache. Eu folosesc MAMP, așa că arată cam așa:
cd / Aplicații / MAMP / htdocs ln -s ~ / Site-uri / eyew / web / Aplicații / MAMP / htdocs / eyew
Trebuie să creați o bază de date locală. Eu folosesc PHPMyAdmin pentru a crea unul grafic:
Apoi am creat un fișier de inițializare în /var/secure/eyew.ini
cu acreditările bazei de date și cu ID-urile și cheile Instagram. Am descris acest proces recent într-un alt tutorial Tuts +: Protejarea cheilor de la GitHub.
Fișierul meu inițial arată astfel:
mysql_host = "localhost" mysql_db = "eyew" mysql_un = "xxxxxxxxx" mysql_pwd = "xxxxxxxxxxxx" instagram_client_id = "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7" instagram_client_secret = "1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4"
Actualizați-vă Compozitorul și bibliotecile sale de furnizori:
sudo compozitor auto-actualizare sudo compozitor actualizare
Apoi inițializați baza noastră de date. Prima migrare instalează tabelele utilizatorilor pentru extensia Dmeroff a dezvoltatorului nostru Yii2-User, iar cea de-a doua creează tabelele specifice pentru aplicații:
./ yii migrații / up - migrarePath = @ vânzător / dektrium / yii2-utilizator / migrații ./yii migrați / up
Din nou, puteți afla mai multe despre configurarea unei aplicații Yii Framework în programul meu de programare cu Yii2 pentru Tuts+.
Iată schema MySQL pentru tabela noastră de imagini Instagram - o numim tabelul Gram. O vom folosi pentru a stoca rezultatele geosearch.
clasa m150308_184606_create_gram_table extinde migrarea funcția publică sus () $ tableOptions = null; dacă ($ this-> db-> driverName === 'mysql') $ tableOptions = 'SETUL CHARACTERU utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'; $ this-> createTable ('% gram', ['id' => Schema :: TYPE_PK, 'moment_id' => Schema :: TYPE_INTEGER. TYPE_STRING 'NOT NULL DEFAULT 0', 'link' => Schema :: TYPE_STRING 'NOT NULL DEFAULT 0', 'image_url' => Schema :: TYPE_STRING. : TYPE_TEXT 'NU NULL', 'created_time' => Schema :: TYPE_INTEGER. 'NOT NULL', 'created_at' => Schema :: TYPE_INTEGER. 'NOT NULL', 'updated_at' => Schema :: TYPE_INTEGER. NULL ',], $ tableOptions); $ this-> addForeignKey ('fk_gram_moment', '% gram', 'moment_id', 'moment', 'id', 'CASCADE', 'CASCADE');
Am redenumit aplicația de probă "Instapi", scurt pentru API-ul Instagram.
Iată o privire asupra a ceea ce ar trebui să vedeți atunci când vizitați site-ul în browser-ul dvs.:
Pentru a implementa căutările media în aplicația noastră Instapi, folosesc pachetul PHP Instagram Galen Grover.
Mai întâi, să implementăm o căutare media / populare
. Vom interoga API-ul și vom afișa rezultatele într-un tabel.
Am creat o acțiune numită populară în GramController.php:
funcția publică funcțiaPopular () $ gram = new Gram (); $ media = $ gram-> căutarePopular (); returnați $ this-> render ('popular', 'media' => $ media,]);
Se cheamă searchPopular ()
în modelul Gram.php:
setClientID (\ Yii :: $ app-> params ['instagram'] ['client_id']); $ media = $ instagram-> getPopularMedia (); returnați $ media;
În /views/gram/popular.php
, am creat o structură de tabel HTML:
title = 'Instagrame'; $ this-> params ['breadcrumbs'] [] = $ acest-> titlu; ?>
render ('_ element', ['m' => $ m,]); ?> Imagine ID Utilizator miniatură Legendă Creat la
și să includă _item.php
afișare parțială pentru a afișa rezultatele mediilor individuale:
id?> ">= $m->id?> user-> username?> ">= $m->user-> username?> link?> "> caption-> text)? $ m-> caption-> text: ");?> = $m->create_time?>
Iată rezultatele interogărilor populare ale Instagram media. Continuați și actualizați pagina în aplicație. Este distractiv să vezi ce urmează.
Am legat ID-ul media Instagram din prima coloană de o acțiune a controlorului care solicită punctul final media care ne obține mai multe informații:
funcția publică funcțiaLookup ($ id) $ gram = new Gram (); $ media = $ gram-> căutare ($ id); print_r ($ media);
Iată funcția de căutare în modelul Instagram:
funcția de căutare publică ($ id) $ instagram = new Instagram \ Instagram; $ instagram-> setClientID (\ Yii :: $ app-> params ['instagram'] ['client_id']); $ media = $ instagram-> getMedia ($ id); returnați $ media;
Iată o captură de ecran a datelor scoase pe ecran:
Evident, puteți utiliza și stoca aceste informații oricum doriți.
Acum, hai să căutăm imagini dintr-un anumit moment și loc. Pentru acest exemplu, voi examina exemplul martor ocular.
Codul nostru vă permite să definiți un moment ca un loc și un timp. Se compune dintr-un descriptor prietenos, o locație (latitudine și longitudine), un timp de pornire și o durată (în minute). Pentru primul meu exemplu, caut utilizatorii Instagram care au fost prezenți la filmarea lui Macklemore în seara zilei de miercuri, 24 iulie 2013, la reperul lui Dick's Drive din Seattle.
Folosind Hărți Google, pot obține latitudinea și longitudinea GPS pentru Dick's. Este 47.6195 -122.321.
Din articol, am aflat că producția a fost oprită la ora 1 dimineața. Voi alege un timp de start de la ora 22 și o durată de 3 ore.
Instagram acceptă orele de pornire în GMT, așa că am codificat hardcode o ajustare a modificării timpului de opt ore din zona mea de fus orar (PST). Este posibil să fie necesar să modificați acest lucru în cod.
funcția publică funcțiaCreate () $ model = Moment nou (); dacă ($ model-> încărcați (Yii :: $ app-> request-> post ())) // convertiți data de dată la marca de timp $ model-> start_at = strtotime ($ model-> start_at); // ajustați pentru GMT $ model-> start_at + = (3600 * 8); // validează formularul conform regulilor modelului dacă ($ model-> validate ()) // toate intrările sunt valide $ model-> save (); returnați $ this-> redirect (['view', 'id' => $ model-> id]); altceva return $ this-> render ('crea', ['model' => $ model,]); altceva return $ this-> render ('crea', ['model' => $ model,]);
Pentru a căuta Instagram, faceți clic pe pictograma camerei de mai jos:
Căutarea reală este destul de simplă: $ instagram-> searchMedia ($ această-> latitudine, $ this-> longitude, $ params);
setClientID (\ Yii :: $ app-> params ['instagram'] ['client_id']); $ end_at = $ this-> start_at + ($ această-> durată * 60); $ params = array ('min_timestamp' => $ this-> start_at, 'max_timestamp' => $ end_at, 'distance' => $ this-> distance, 'count' => 50); $ media = $ instagram-> căutareMedia ($ this-> latitude, $ this-> longitude, $ params); foreach ($ media ca $ m) if (isset ($ m-> caption-> text)) $ caption = $ m-> caption-> text; altceva $ caption = "; $ i = new Gram (); $ i-> add ($ this-> id, $ m-> user-> username, $ m-> link, $ m-> imagini-> thumbnail-> url, $ caption);
Rezultatele sunt stocate în tabelul Gram, pe care apoi îl putem naviga:
funcția publică adăugă ($ moment_id, $ username, $ link, $ created_time, $ image_url, $ text) if (! Gram :: find () -> unde (['moment_id' => $ moment_id] ['link' => $ link]) -> și unde (['created_time' => $ created_time]) -> există ()) $ i = new Gram (); $ i-> moment_id = $ moment_id; $ i-> username = $ username; $ i-> link = $ link; $ i-> create_time = $ create_time; $ i-> image_url = $ imagine_url; $ i-> text = $ text; $ J-> Salvare ();
Iată prima pagină a rezultatelor căutării mele. Puteți vedea mulțimile și limuzina Cadillac a lui Macklemore care conduce.
Apoi, pe pagina trei, un utilizator Instagram numit Joshua Lewis are o șansă de Macklemore ieșind din Cadillac:
Iată Macklemore:
Acest exemplu arată în mod clar puterea furnizată de API-ul de căutare Instagram. În doar câteva momente, am găsit o varietate de martori oculari la un eveniment din vara anului 2013.
Sper că v-ați bucurat să aflați despre API-ul Instagram până acum. În următorul episod, vom examina autentificarea OAuth, astfel încât să putem interoga zone ale serviciului Instagram care necesită autorizare de utilizator.
Între timp, vă rugăm să postați întrebările și comentariile de mai jos. Puteți să mă contactați și pe Twitter @reifman sau să mă trimiteți direct prin e-mail. De asemenea, puteți să răsfoiți pagina instructorului Tuts + pentru a vedea alte tutoriale pe care le-am scris.
Imaginea de previzualizare este modificată dintr-un rezultat care a apărut în căutarea noastră API.