De verbluffende groei van Twitter wordt alleen geëvenaard door de intuïtieve, ontwikkelaarsvriendelijke API. In dit tweede deel van de serie leren we meer over de API van Twitter en hoe ermee te werken.
Te veel abstractie is nooit een goede zaak.
In dit Web 2.0-tijdperk hebben webtoepassingen met een eenvoudig te gebruiken, intuïtieve API een duidelijk voordeel omdat ontwikkelaars het platform kunnen gebruiken en bouwen en zo meer gebruikers kunnen vastleggen. Naarmate we dichter bij het sociale web en mashups komen, is een goede API geen leuke toevoeging meer: het is ronduit noodzakelijk. En vergeet niet dat te veel abstractie nooit een goede zaak is. Hoewel er een aantal API-kits beschikbaar zijn om het werken met de API in kwestie te vereenvoudigen, zou het niet cool zijn om te weten wat er feitelijk gaande is onder de motorkap? Zou het niet spannend zijn om de werkelijke voodoo die zich tussen de kit en de API afspeelt te deconstrueren? Ja dat dacht ik al!
Voor elke functionaliteit laat ik je zien hoe je dit op twee manieren kunt bereiken: de eerste met een server-side-taal, in dit geval PHP, en de tweede met alleen een client-side-taal, JavaScript. Elke implementatie zal afzonderlijk functioneren en de vereiste functionaliteit bereiken. Voel je vrij om deze oplossingen te mixen en matchen om een hybride te creëren. De JavaScript-voorbeelden gebruiken JSON als de indeling voor de payload, terwijl ik voor het PHP-voorbeeld XML heb gekozen.
Het eerste dat u moet weten over de Twitter API is dat deze RESTful is. Om het jargon te verminderen, betekent dit dat u de juiste URL's gebruikt met GET- of POST-aanvragen om de gegevens die door de API worden blootgesteld, te wijzigen, aan te vragen of te manipuleren.
Er zijn eigenlijk drie afzonderlijke Twitter-API's.
Elk van deze API's heeft zijn eigen specifieke functionaliteit, eigenaardigheden, voor- en nadelen.
De REST-methoden vormen de kern van de Twitter-API en worden door de ontwikkelaars zelf op Twitter geschreven. Hiermee kunnen andere ontwikkelaars toegang krijgen tot alle hoofdgegevens van Twitter en deze manipuleren. U zou deze API gebruiken om alle gebruikelijke dingen te doen die u met Twitter wilt doen, zoals het ophalen van statussen, het bijwerken van statussen, het tonen van de tijdlijn van een gebruiker, het verzenden van directe berichten enzovoort.
De zoek-API is eigenlijk het geesteskind van de jongens bij Summize Inc, een bedrijf dat Twitter heeft overgenomen voor zijn API. Met de zoek-API kun je verder kijken dan jij en je volgers. U hebt deze API nodig als u trending-onderwerpen wilt bekijken enzovoort.
Eindelijk hebben we de stream-API. Met deze API kunnen ontwikkelaars enorme hoeveelheden realtime gegevens samplen. Omdat deze API alleen beschikbaar is voor goedgekeurde gebruikers, gaan we dit vandaag niet bespreken.
Openbare gegevens zijn vrij toegankelijk zonder een API-sleutel. Bij het aanvragen van privégegevens en / of gebruikerspecifieke gegevens vereist Twitter authenticatie. Je kunt je authenticeren met Twitter op twee manieren.
Dit is de standaardmethode voor authenticatie waarop Twitter oorspronkelijk is gestart en die nog steeds wordt gebruikt. In deze methode geeft u de gebruikersnaam en het wachtwoord door als Bse64-gecodeerde reeksen in de header van het HTTP-verzoek. Een voorbeeld van een GET-verzoek zou er zo uitzien.
GET /somefolder/index.html HTTP / 1.1 Host: net.tutsplus.com Autorisatie: Basic dXNlcm5hbWU6cGFzc3dvcmQ =
Ziet er een beetje ingewikkeld uit, nietwaar? Laat het me uitleggen. De eerste twee regels maken deel uit van een standaard GET-verzoek. De derde regel is waar alle magie gebeurt. We zorgen ervoor dat de server weet dat we basisauthentic gebruiken om zich te authenticeren en vervolgens de in de basis 64 gecodeerde reeks doorgeven gebruikersnaam wachtwoord als de waarde. De server kan vervolgens de inloggegevens decoderen, controleren en toegang verlenen als alles overeenkomt.
Twitter die basisauthentic ondersteunt, is waarschijnlijk een van de redenen waarom het zo groot werd omdat het een groot aantal ontwikkelaars liet ontwikkelen voor het platform, omdat de toetredingsdrempel relatief laag is. Basic auth is voldoende om alle delen van de API op te halen.
Twitter begon OAuth te ondersteunen in het tweede kwartaal van 2009. Gebruikers die een OAuth-compatibele applicatie gebruiken, hoeven hun wachtwoorden niet bekend te maken aan het programma en kunnen ook de besturing delegeren aan het programma met meerdere toegangsniveaus. We zullen de OAuth-implementatie van Twitter echter vandaag niet bekijken. OAuth en het implementeren van de workflow is een vrij complex onderwerp en vereist een eigen artikel. Ik sla liever OAuth over voor dit artikel in plaats van een beetje half gebakken uitleg weg te gooien en code te schrijven op basis van die uitleg.
"Twitter laat u alleen een vooraf gedefinieerd aantal oproepen naar zijn API maken."
Voordat we ons verdiepen in het coderingsgedeelte, moet ik één ding absoluut duidelijk stellen: Twitter laat je alleen een vooraf gedefinieerd aantal oproepen naar zijn API maken. De limiet van de REST-API is 150 voor een uur, terwijl de limiet van de zoek-API vanaf nu niet meer wordt vermeld. Voor geauthenticeerde oproepen wordt de oproep in mindering gebracht op de limiet van de authenticerende gebruiker, terwijl deze voor niet-geverifieerde oproepen wordt afgetrokken van de quota van de bellende IP.
Houd er rekening mee dat u bij het ontwikkelen van een applicatie de informatie in de cache opslaat of de limiet respecteert en erbinnen blijft. Als u denkt dat de vooraf ingestelde limiet niet toereikend is voor uw toepassing, kunt u altijd een witte lijst aanvragen.
In plaats van naar een aantal methoden te kijken die je waarschijnlijk nooit zult gebruiken, heb ik besloten om je te laten zien hoe je de drie meest voorkomende taken uitvoert.
Ik denk dat dit een goede subset is van de API die direct dekt waarvoor de API het meest wordt gebruikt, zonder zichzelf te dun te verspreiden door een heleboel methoden te behandelen. Met dat uit de weg, laten we beginnen!
De eerste functionaliteit die we gaan bekijken, is het weergeven van de status van een gebruiker. Dit is het meest gebruikte gebruik van de API als een webontwikkelaar de status van een bepaalde gebruiker wil weergeven zonder zijn toevlucht te nemen tot een Twitter-badge.
status-> tekst.' - '.date ("g: i: A D, F jS Y", strtotime ($ response-> status-> created_at)); ?>
De eerste methode maakt gebruik van PHP. Het is een relatief eenvoudige methode waarbij we gewoon het gebruikersspecifieke XML-bestand pakken en vervolgens analyseren om de huidige status weer te geven.
We zetten het XML-bestand eerst om in een object, zodat we het gemakkelijk kunnen doorlopen met behulp van de SimpleXML-uitbreiding die standaard wordt geleverd met PHP. Nu het object is gemaakt, vinden we alleen het staat knooppunt en druk de statustekst en aanmaaktijd af.
Onthoud dat dit alleen de huidige status van de gebruiker weergeeft. Als u een lijst met recente updates wilt, zie hieronder.
cURL is een opdrachtregelhulpprogramma en wordt ingeschakeld op de meeste gehoste servers. Om Wikipedia te citeren:
Bij computing werkt cURL als een opdrachtregelprogramma voor het overbrengen van bestanden met URL-syntaxis.
Het is een bibliotheek die is ontworpen om gebruikers in staat te stellen om verbinding te maken met verschillende soorten servers met behulp van verschillende protocollen. Het gebruik van cURL is de voorkeursmethode voor alle Twitter-bibliotheken die er zijn en we zullen hetzelfde gebruiken.
status als $ status) echo $ status-> tekst. '
door '$ status-> gebruiksvriendelijkheid> screen_name.' op '.date ("g: i: A D, F jS Y", strtotime ($ status-> created_at)).'
'; ?>
Laat het me uitleggen. Ten eerste wijzen we onze gebruikersnaam en wachtwoord toe aan afzonderlijke variabelen die later moeten worden gebruikt. Ik stel vervolgens de URL in op de hierboven vermelde waarde. Omdat de methode authenticatie vereist, sturen we onze gebruikersnaam en wachtwoord in.
Vervolgens voeren we onze oproep uit en slaan we de respons op in een afzonderlijke variabele. We zetten het vervolgens om in een geldig XML-object en ontleden de gegevens vervolgens door de status af te drukken en te publiceren.
Ik heb de gegevens en de tijd opgemaakt om er uit te zien zoals ik dat wil. Als u zinvolle datums en tijden wilt 3 uur geleden of 12 dagen geleden, je moet zelf een fragment zoeken of zelf coderen. Twitter retourneert alleen normaal geformatteerde gegevens en tijd.
U ontvangt een uitvoer, vergelijkbaar met deze:
Ik ben dom. Geen IDE gebruikt en een komma miste 110 minuten verspillen. Herinner me eraan niet te proberen te debuggen als ik slaperig of moe ben. om 6:01: PM Vrij, 14 februari 2010 Flood of traffic. : O Ik moet zoveel bezoekers hebben gebudgetteerd. Argh! Ik hoop dat er niets breekt. om 20:51 uur: PM Thu, 13 februari 2010
Het gebruik van JavaScript om uw status weer te geven, is de meest elegante manier om vooruit te gaan, omdat u het asynchroon kunt laden nadat de pagina is geladen. Dit betekent dat, zelfs als Twitter downm is of te laat is, uw site hetzelfde functioneert.
We gaan de ajax-methode van jQuery gebruiken om al ons vuile werk vandaag te doen.
$ .ajax (url: "http://twitter.com/statuses/user_timeline/userid.json?callback=?", dataType: "json", time-out: 15000, succes: functie (gegevens) $ ("# data "). html (" Gegevens succesvol verkregen!
"); voor (i = 0; i"+ data [i] .text) +""; $ (" # data "). append (" "+ data [i] .created_at +"
");, error: function () alert (" Failure! ");,);
Nogmaals, een groot deel van de code, maar, opgesplitst, het is eenvoudig echt. We gebruiken de AJAX-functie van het laagste niveau van jQuery in plaats van de getJSON-methode, omdat de laag-niveau-oproep veelzijdiger lijkt.
Eerst definiëren we de URL en het datatype. We voegen ook een callback-functie toe aan de URL om de cross-domeinbeperking in de meeste browsers te omzeilen. Zonder deze callback zou ons script niet worden uitgevoerd; het zou gewoon een foutmelding geven en stoppen.
Ik heb ervoor gekozen niet te verifiëren, omdat we een ID in de URL opgeven en dus geen verificatie nodig hebben - dat en omdat basisverificatie niet echt veilig is voor gevoelige informatie. U wilt uw wachtwoord niet verzenden via een onveilige lijn.
Eindelijk de succesfunctie die wordt aangeroepen wanneer er geen fouten worden aangetroffen. We parseren gewoon het geretourneerde JSON-object en drukken de tekst en de creatietijd uit. #gegevens is slechts een container waarin we al onze gegevens plaatsen.
Deze code is de sjabloon voor al uw methoden die toegang hebben tot gegevens. Zeer minimale verandering is vereist om het aan te passen zodat het met andere API-methoden werkt.
Voor het PHP-voorbeeld hoeft u alleen de URL-waarde te wijzigen om naar een nieuwe methode te verwijzen, en u zou grotendeels klaar moeten zijn. Als de methode parameters vereist, voegt u ze gewoon rechtstreeks toe aan de URL zelf. Simpel als dat.
Hetzelfde met het JavaScript-voorbeeld. Het enige dat u hoeft te doen, is de URL wijzigen die door de methoden wordt aangevraagd, en u moet klaar zijn. Zorg ervoor dat alleen openbare gegevens worden opgehaald met de JavaScript-methode.
Onthoud dat deze code de basis is voor al uw andere methoden die gegevens ophalen. Dit omvat methoden om je directe berichten, tijdlijnen, vrienden, volgers en genoemde tweets te krijgen. Wijzig de URL, voeg waar nodig een parameter toe en u bent klaar! Makkelijk, nee?
Met elke Twitter-toepassing die je aan het maken bent, is het een goed idee om gebruikers hun status te laten bijwerken. Vergeet niet dat eerdere toepassingen die basisauthentificatie gebruikten, een aangepaste bronreeks konden gebruiken voor alle tweets die vanuit hun applicatie werden verzonden. Nu is het implementeren van OAuth de enige manier waarop u een aangepaste tekenreeks krijgt. Kortom, als u wilt dat alle tweets die vanuit uw toepassing worden verzonden een link naar uw app hebben, gebruikt u OAuth. Met dat uit de weg, laten we de code zien.
We kunnen cURL net zo gemakkelijk gebruiken om op Twitter te plaatsen. De code is bijna hetzelfde als voorheen, behalve dat we de URL wijzigen in de juiste URL. We zorgen er ook voor dat posting is ingeschakeld en de velden instellen die moeten worden gepost. De API-methode vereist statusparameters en daarom stellen we de waarde van de statusvariabele in op deze parameter.
Vergeet niet ervoor te zorgen dat de te plaatsen tekst UTF-8-gecodeerd is. Anders zouden we onnodige fouten tegenkomen.
We slaan nu de respons op die later wordt gebruikt. In dit voorbeeld heb ik ervoor gekozen om niets te doen. Maar in een praktische toepassing zou je zeker een succes / foutmelding willen weergeven en / of het antwoord willen weergeven.
Het posten van een statusupdate naar Twitter met alleen JavaScript lijkt op dit moment onmogelijk omdat er geen manier is om het id en wachtwoord van de gebruiker door te geven. Met Flickr worden die referenties doorgegeven als onderdeel van het POST-verzoek zelf. Met Twitter moeten deze gegevens in de HTTP-headers worden verzonden, en daar lijkt geen manier voor te zijn.
Zelfs zonder rekening te houden met het feit dat u geen referenties naar de service kunt verzenden, is er nog steeds het probleem van het niet kunnen maken van POST-verzoeken tussen verschillende domeinen met het XMLHttp-object. Deze twee punten maken API-methoden die een POST-aanvraag vereisen een strenge no-no met JavaScript.
In het geval u geïnteresseerd bent, biedt een succesvol bericht u dit antwoord.
Vrijdag 14 augustus 21:31:53 +0000 2009 3316091255 CURL testen met de Twitter API vals vals 18118645 Tony / Siddharth lordtottuu Indië Gamer, ontwikkelaar, webontwerper, schrijver, geek. http://s3.amazonaws.com/twitter_production/profile_images/300532536/NVAGSoNIpS_o5XxbmB4pl-boGheY6JBASaiLiieGIAO6JTitHnRMNJa6ktCPRMQW_normal.jpg http://ssiddharth.com vals
De codetechnieken die hierboven zijn besproken, bestaan uit de basis voor al uw gegevens die gegevens naar Twitter verzenden. Dit omvat methoden waarmee u iemand kunt volgen / ontkoppelen, rechtstreekse berichten kunt verzenden, favorieten kunt maken, mensen kunt blokkeren, enzovoort enzovoort..
Het enige dat u hoeft te doen, is deze URL's wijzigen, bekijken of ze extra parameters vereisen en deze toevoegen indien nodig. Niets anders vereist.
Gebruikers toestaan via Twitter te zoeken naar informatie is mogelijk een belangrijke behoefte aan een toepassing. Voor dit doel kunnen we de zoek-API gebruiken om Twitter te ondervragen.
resultaten als $ resultaat) echo $ resultaat-> tekst; ?>
Met de bovenstaande code kun je op Twitter zoeken naar tweets die verwijzen naar Envato. Zoals gewoonlijk veranderen we de URL om naar de juiste API-methode te verwijzen en door te gaan. Omdat deze methode alleen beschikbaar is in JSON- of ATOM-indelingen, heb ik ervoor gekozen om met JSON te werken.
Ik heb PHP's ingebouwd json_decode functie om het in een object om te zetten, zodat we het antwoord gemakkelijk kunnen analyseren. In dit voorbeeld heb ik alleen de tweets zelf afgedrukt. In uw toepassingen wilt u waarschijnlijk meer weergeven. Een voorbeeldreactie is hieronder.
[text] => @nsethi kijk op http://www.envato.com/ als je wat zieke tuts wilt ... Ik ga er later over bloggen. [to_user_id] => 1273919 [to_user] => nsethi [from_user] => thinklime [id] => 3315720513 [from_user_id] => 33020944 [iso_language_code] => en source] => Tweetie [profile_image_url] => http: // s3.amazonaws.com/twitter_production/profile_images/201032569/idTwitter_normal.jpg [created_at] => Fri, 14 Aug 2009 21:10:42 +0000
Zoals je ziet, is veel informatie over de gebruiker en de tweet zelf beschikbaar. Voel je vrij om te mixen en matchen.
$ .ajax (url: "http://search.twitter.com/search.json?q=somestring&callback=?", dataType: "json", time-out: 15000, succes: functie (gegevens) // ontleedgegevens here, error: function () alert ("Failure!");,);
Zoals gewoonlijk gebruiken we de ajax-methode om de zoekservice van Twitter te pingen. Net als in het vorige voorbeeld hebben we een callback-functie opgenomen om de crossdomeinbeperking te omzeilen.
Een voorbeeldreactie, direct geplukt van Twitter, ziet er zo uit.
"results": ["text": "@ twitterapi http: \ / \ / tinyurl.com \ / ctrefg", "to_user_id": 396524, "to_user": "TwitterAPI", "from_user": "jkoum", "id": 1478555574, "from_user_id": 1833773, ... afgekapt ...], "since_id": 0, "max_id": 1480307926, "refresh_url": "? since_id = 1480307926 & q =% 40twitterapi", "results_per_page": 15, " next_page ":"? page = 2 & max_id = 1480307926 & q =% 40twitterapi "," completed_in ": 0.031704," page ": 1," query ":"% 40twitterapi "
Als een kanttekening, kan de zoekmethode echt op verschillende manieren worden gebruikt.
Ik heb besloten mezelf te beperken tot het laten zien van en schrijven naar een service met behulp van de API. Op deze manier kan ik me alleen concentreren op die specifieke methoden. En ook omdat de meeste methoden voortbouwen op deze basis. Als u de tijdlijn van een vriend wilt retourneren, wijzigt u gewoon de URL en parseert u de reactie met minimale poespas.
Hetzelfde gebeurt als u een direct bericht naar een andere gebruiker wilt sturen of een andere gebruiker wilt noemen. De basis van posten is er nog steeds. U hoeft slechts een of twee parameters toe te voegen om het allemaal mogelijk te maken. Het heeft geen zin om dat allemaal te bedekken als ik de basis gewoon veel duidelijker kan uitleggen.
Ik hoop dat je vandaag meer hebt geleerd over hoe je kunt werken met de API van Twitter. Laat me, zoals altijd, via de reacties weten of je hulp nodig hebt!