Plonger dans l'API Twitter

La croissance étonnante de Twitter n'a d'égal que son API intuitive et conviviale pour les développeurs. Dans cette seconde partie de la série, nous allons en apprendre davantage sur les API de Twitter et sur la façon de les utiliser..

Trop d'abstraction n'est jamais une bonne chose.

À l'ère du Web 2.0, les applications Web dotées d'une API intuitive et facile à utiliser présentent un avantage distinct, car elles permettent aux développeurs d'exploiter et de créer pour la plate-forme et de capturer ainsi plus d'utilisateurs. Au fur et à mesure que nous nous dirigeons vers le Web social et les mashups, une bonne API n’est plus un ajout intéressant: c’est carrément nécessaire. Et rappelez-vous, trop d’abstraction n’est jamais une bonne chose. Bien qu'il existe un certain nombre de kits d'API pour simplifier l'utilisation de l'API en question, ne serait-il pas intéressant de savoir ce qui se passe réellement sous le capot? Ne serait-il pas excitant de déconstruire le vaudou réel qui se passe entre le kit et l’API? Ouais je le pensais!


Avant que nous commencions

Pour chaque fonctionnalité, je vais vous montrer comment y parvenir de deux manières: la première en utilisant un langage côté serveur, PHP dans ce cas, et la seconde en utilisant uniquement un langage côté client, JavaScript. Chaque mise en œuvre fonctionnera séparément et atteindra la fonctionnalité requise. N'hésitez pas à combiner ces solutions pour créer un système hybride. Les exemples JavaScript utiliseront JSON comme format pour la charge, tandis que pour l'exemple PHP, j'ai choisi XML..


Notions de base sur les API Twitter

La première chose que vous devez savoir sur l’API Twitter est qu’elle est RESTful. Pour couper le jargon, cela signifie que vous accédez aux URL appropriées à l'aide de requêtes GET ou POST pour modifier, demander ou manipuler les données exposées par l'API..

Il existe trois API Twitter distinctes..

  • L'API normale basée sur REST
  • L'API de recherche
  • L'API Stream

Chacune de ces API possède son propre ensemble distinct de fonctionnalités, astuces, avantages et inconvénients..

API REST

Les méthodes REST constituent le noyau de l'API Twitter et sont écrites par les développeurs sur Twitter lui-même. Il permet aux autres développeurs d’accéder à toutes les données principales de Twitter et de les manipuler. Vous utiliseriez cette API pour effectuer tout ce que vous voudriez faire avec Twitter, notamment la récupération des statuts, la mise à jour des statuts, l'affichage de la chronologie d'un utilisateur, l'envoi de messages directs, etc..

API de recherche

L’API de recherche est en réalité l’invention de Summize Inc, une entreprise que Twitter a acquise pour son API. L'API de recherche vous permet de regarder au-delà de vous et de vos abonnés. Vous avez besoin de cette API si vous souhaitez afficher des sujets de tendance, etc..

Stream API

Enfin, nous avons l'API de flux. Cette API permet aux développeurs d'échantillonner d'énormes quantités de données en temps réel. Puisque cette API n'est disponible que pour les utilisateurs approuvés, nous n'allons pas l'examiner aujourd'hui..


L'authentification et tout ce que Boohockey

Les données publiques peuvent être librement consultées sans clé API. Lors de la demande de données privées et / ou de données spécifiques à l'utilisateur, Twitter requiert une authentification. Vous pouvez vous authentifier avec Twitter en utilisant l'une des deux méthodes..

Authentification de base

C’est la méthode d’authentification par défaut que Twitter a initialement lancée et qu’il utilise toujours. Dans cette méthode, vous transmettez le nom d'utilisateur et le mot de passe sous forme de chaînes codées Bse64 dans l'en-tête de la requête HTTP. Un exemple de demande GET ressemblerait à.

GET /somefolder/index.html Hôte HTTP / 1.1: net.tutsplus.com Autorisation: Basic dXNlcm5hbWU6cGFzc3dvcmQ =

Ça a l'air un peu compliqué, n'est-ce pas? Laisse-moi expliquer. Les deux premières lignes font partie d'une requête GET standard. La troisième ligne est l'endroit où toute la magie se produit. Nous nous assurons que le serveur sait que nous utilisons l’authentification de base pour s’authentifier avec elle, puis transmettons la chaîne codée en base 64 de Identifiant Mot de passe comme la valeur. Le serveur peut ensuite décoder les informations d’identité, les vérifier et fournir un accès si tout correspond..

La prise en charge de l’authentification de base par Twitter est probablement l’une des raisons pour lesquelles elle a pris une telle ampleur, car elle a permis à une multitude de développeurs de développer pour la plate-forme puisque la barrière d’entrée est relativement basse. L'authentification de base est suffisante pour récupérer toutes les parties de l'API.

OAuth

Twitter a commencé à prendre en charge OAuth au deuxième trimestre de 2009. Les utilisateurs utilisant une application compatible OAuth n'ont pas besoin de divulguer leurs mots de passe au programme et peuvent également déléguer le contrôle au programme avec plusieurs niveaux d'accès. Cependant, nous ne regarderons pas l'implémentation OAuth de Twitter aujourd'hui. OAuth et la mise en œuvre de son flux de travail est un sujet assez complexe et nécessite un article à part. Je préfère sauter OAuth pour cet article plutôt que de lancer des explications à moitié cuites et d'écrire du code basé sur ces explications..


Mise en garde

"Twitter ne vous permet que de faire un nombre prédéfini d'appels à son API."

Avant de nous intéresser de près à la partie codage, je dois clarifier une chose: Twitter ne vous permet que de faire un nombre prédéfini d'appels à son API. La limite de l'API REST est 150 pour une heure, alors que la limite de l'API de recherche n'est pas dévoilée pour l'instant. Pour les appels authentifiés, l'appel est déduit de la limite d'authentification de l'utilisateur, tandis que pour les appels non authentifiés, il est déduit du quota de l'IP appelant..

N'oubliez pas que lorsque vous développez une application, assurez-vous de mettre en cache les informations ou de respecter la limite et de vous y tenir. Si vous pensez que la limite prédéfinie est insuffisante pour votre application, vous pouvez toujours demander une liste blanche..


Les tâches les plus courantes

Au lieu de regarder un certain nombre de méthodes que vous n'utiliserez probablement jamais, j'ai décidé de vous montrer comment effectuer les trois tâches les plus courantes..

  • Récupérer votre statut
  • Mise à jour de votre statut
  • Recherche sur Twitter

Je pense qu'il s'agit d'un sous-ensemble approprié de l'API qui couvre directement ce pour quoi l'API est le plus utilisé sans se disperser trop, en couvrant une tonne de méthodes. Avec cela en route, commençons!


Récupérer votre statut

La première fonctionnalité que nous allons examiner est l'affichage du statut de l'utilisateur. Il s’agit de l’utilisation la plus courante de l’API si un développeur Web souhaite afficher le statut d’un utilisateur donné sans recourir à un badge Twitter..

Méthode PHP n ° 1: récupération directe

 statut-> texte. ' - '.date ("g: i: A D, F jS Y", strtotime ($ response-> status-> created_at)); ?>

La première méthode utilise PHP. Il s’agit d’une méthode relativement simple qui consiste à récupérer le fichier XML spécifique à l’utilisateur, puis à l’analyser pour afficher le statut actuel..

Nous convertissons d'abord le fichier XML en un objet afin de pouvoir le parcourir facilement à l'aide de l'extension SimpleXML fournie en standard avec PHP. Maintenant que l'objet a été créé, nous venons de trouver le statut noeud, et imprimer le texte d'état et l'heure de création.

Souvenez-vous que ceci n’affiche que le statut actuel de l’utilisateur. Si vous voulez une liste des mises à jour récentes, voir ci-dessous.

Méthode PHP n ° 2: cURL

cURL est un outil de ligne de commande disponible sur la plupart des serveurs hébergés. Pour citer Wikipedia:

En informatique, cURL fonctionne comme un outil de ligne de commande pour transférer des fichiers avec la syntaxe URL..

Cette bibliothèque est conçue pour permettre aux utilisateurs de se connecter à différents types de serveurs en utilisant différents protocoles. CURL est la méthode de choix pour toutes les bibliothèques Twitter et nous utiliserons la même chose..

 statut en tant que $ statut) echo $ status-> text. '
par '. $ status-> utilisateur-> nom_écran.' at '.date ("g: i: A D, F jS Y", strtotime ($ status-> created_at)).'

'; ?>

Laisse-moi expliquer. Tout d'abord, nous affectons notre nom d'utilisateur et notre mot de passe à des variables distinctes à utiliser ultérieurement. J'ai ensuite mis l'URL à la valeur mentionnée ci-dessus. Comme la méthode nécessite une authentification, nous envoyons notre nom d'utilisateur et mot de passe.

Ensuite, nous exécutons notre appel et stockons la réponse dans une variable distincte. Nous le convertissons ensuite en un objet XML valide, puis analysons les données et imprimons le statut et le moment de leur publication..

J'ai formaté les données et le temps de regarder comme je le souhaite. Si vous voulez des dates et des heures fantaisistes comme il y a 3 heures ou Il y a 12 jours, vous devez rechercher un extrait ou coder vous-même. Twitter ne renvoie que les données et l'heure normalement formatées.

Vous recevrez une sortie similaire à celle-ci:

 Je suis stupide. N'a pas utilisé d'IDE et a raté une virgule gaspillant 110 minutes. Rappelez-moi de ne pas essayer le débogage lorsque je suis fatigué ou fatigué. à 18h01: vendredi 14 février 2010, après-midi Inondation de la circulation. : O Je dois avoir budgété pour autant de visiteurs. Argh! J'espère que rien ne casse. à 20h51: Jeudi 13 février 2010

JavaScript

Utiliser JavaScript pour afficher votre statut est la manière la plus élégante d’aller de l’avant car vous pouvez le charger de manière asynchrone une fois la page chargée, ce qui signifie que même si Twitter est en panne ou en retard, votre site fonctionne de la même manière..

Nous allons utiliser la méthode ajax de jQuery pour faire tout notre sale boulot aujourd'hui.

 $ .ajax (url: "http://twitter.com/statuses/user_timeline/userid.json?callback=?", dataType: "json", délai d'expiration: 15000, réussite: function (data) $ ("# data "). html (" Données obtenues avec succès! 
"); pour (i = 0; i"+ data [i] .text) +"

"; $ (" # data "). append ("

"+ data [i] .created_at +"

");, error: function () alert (" Failure! ");,);

Encore une fois, un gros morceau de code mais, décomposé, c'est simple, vraiment. Nous utilisons la fonction AJAX de plus bas niveau de jQuery à la place de la méthode getJSON, car l'appel de bas niveau semble plus polyvalent..

Tout d'abord, nous définissons l'URL et le type de données. Nous ajoutons également une fonction de rappel à l'URL pour contourner la restriction interdomaine sur la plupart des navigateurs. Sans ce rappel, notre script ne fonctionnerait pas; il reviendrait juste une erreur et quitter.

J'ai choisi de ne pas m'authentifier, car nous spécifions un identifiant dans l'URL, et par conséquent, nous n'avons pas besoin d'authentification - cela et parce que l'authentification de base n'est pas vraiment sûre pour les informations sensibles. Vous ne voulez pas envoyer votre mot de passe sur une ligne non sécurisée.

Enfin, la fonction success appelée lorsque aucune erreur n’est rencontrée. Nous venons d'analyser l'objet JSON renvoyé et d'imprimer le texte et l'heure de création.. #Les données est juste un conteneur où nous mettons toutes nos données.

Une note rapide

Ce code est le modèle pour toutes vos méthodes qui accèdent aux données. Des modifications très minimes sont nécessaires pour le modifier afin qu'il fonctionne avec d'autres méthodes d'API..

Pour l'exemple PHP, tout ce que vous avez à faire est de changer la valeur de l'URL pour pointer vers une nouvelle méthode, et cela devrait être fait en grande partie. Si la méthode nécessite des paramètres, il vous suffit de les ajouter directement à l'URL elle-même. Aussi simple que cela.

Idem avec l'exemple JavaScript. Tout ce que vous devez faire est de changer l'URL demandée par les méthodes, et vous devriez le faire. Assurez-vous de n'extraire que des données publiques avec la méthode JavaScript.

Rappelez-vous que ce code est la base de toutes vos autres méthodes permettant de récupérer des données. Cela inclut des méthodes pour obtenir vos messages directs, votre calendrier, vos amis, vos abonnés et les tweets mentionnés. Il suffit de changer l’URL, d’ajouter un paramètre au besoin, et le tour est joué! Facile, non?


Mise à jour de votre statut

Avec n'importe quelle application Twitter que vous créez, permettre aux utilisateurs de mettre à jour leur statut est une évidence. N'oubliez pas que les applications utilisant une authentification de base pouvaient utiliser une chaîne source personnalisée pour tous les tweets envoyés à partir de leur application. Maintenant, implémenter OAuth est le seul moyen d’obtenir une chaîne personnalisée. En bref, si vous souhaitez que tous les tweets envoyés depuis votre application aient un lien vers votre application, utilisez OAuth. Avec cela, voyons le code.

PHP

 

Nous pouvons utiliser cURL tout aussi facilement pour publier sur Twitter. Le code est presque le même qu'avant, sauf que nous modifions l'URL par celle qui convient. Nous nous assurons également que la publication est activée et définissons les champs à publier. La méthode API nécessite des paramètres de statut. Nous définissons donc la valeur de la variable de statut sur ce paramètre..

N'oubliez pas de vous assurer que le texte à poster est codé en UTF-8. Sinon, nous aurions des erreurs inutiles.

Nous sauvegardons maintenant la réponse pour une utilisation ultérieure. Dans cet exemple, j'ai choisi de ne rien faire. Mais dans une application pratique, vous voudrez certainement afficher un message de réussite / d'erreur et / ou afficher la réponse..

JavaScript

Publier une mise à jour de statut sur Twitter en utilisant uniquement JavaScript semble être impossible pour le moment, car il n'existe aucun moyen de transmettre l'identifiant et le mot de passe de l'utilisateur. Avec Flickr, ces informations d'identification sont transmises dans le cadre de la requête POST elle-même. Avec Twitter, ces données doivent être envoyées dans les en-têtes HTTP, et il ne semble pas y avoir de moyen de le faire..

Même en ignorant le fait que vous ne pouvez pas envoyer les informations d'identification au service, il reste le problème de l'impossibilité de faire des requêtes POST entre domaines avec l'objet XMLHttp. Ces deux points font des méthodes API qui nécessitent une requête POST un non-non strict avec JavaScript.

Si vous êtes intéressé, une publication réussie vous rapportera cette réponse.

    Vendredi 14 août 21:31:53 +0000 2009 3316091255 Tester cURL avec l'API Twitter API faux   faux   18118645 Tony / Siddharth lordtottuu Inde Joueur, développeur, concepteur web, écrivain, geek.  http://s3.amazonaws.com/twitter_production/profile_images/300532536/NVAGSoNIpS_o5XxbmB4pl-boGheY6JBASaiLiieGIAO6JTitHnRMNJa6ktCPRMQW_normal.jpg http://ssiddharth.com faux  

Une note rapide

Les techniques de code décrites ci-dessus consistent en la base de toutes vos données qui envoient des données à Twitter. Cela inclut des méthodes qui vous permettent de suivre / ne plus suivre quelqu'un, d'envoyer des messages directs, de créer des favoris, de bloquer des personnes, etc., etc..

La seule chose à faire est de changer ces URL, de voir si elles nécessitent des paramètres supplémentaires et de les ajouter si nécessaire. Rien d'autre requis.


Recherche sur Twitter

Permettre aux utilisateurs de rechercher des informations sur Twitter est potentiellement un besoin important d'une application. À cette fin, nous pouvons utiliser l’API de recherche pour interroger Twitter..

PHP

 résultats en tant que $ result) echo $ result-> text; ?>

Le code ci-dessus vous permet de rechercher sur Twitter des tweets faisant référence à Envato. Comme d'habitude, nous modifions l'URL pour qu'il pointe vers la méthode d'API correcte et procédons. Comme cette méthode n’est disponible qu’en formats JSON ou ATOM, j’ai choisi d’utiliser JSON..

J'ai utilisé PHP intégré json_decode fonction pour le convertir en un objet afin que nous puissions analyser la réponse facilement. Dans cet exemple, je n'ai imprimé que les tweets eux-mêmes. Dans vos applications, vous voudrez probablement en afficher plus. Un exemple de réponse est ci-dessous.

 [text] => @nsethi consultez http://www.envato.com/ si vous voulez des tuts malades… Je vais en parler plus tard. [to_user_id] => 1273919 [to_user] => nsethi [from_user] => thinklime [id] => 3315720513 [from_user_id] => 33020944 [code_iso_langue] => en source] => Tweetie [profil_image_url] => http: s3.amazonaws.com/twitter_production/profile_images/201032569/idTwitter_normal.jpg [created_at] => ven., 14 août 2009 21:10:42 +0000

Comme vous pouvez le constater, de nombreuses informations sur l'utilisateur et le tweet lui-même sont disponibles. Ne hésitez pas à mélanger et assortir.

JavaScript

 $ .ajax (url: "http://search.twitter.com/search.json?q=somestring&callback=?", dataType: "json", délai d'expiration: 15000, réussite: function (data) // analyse des données ici, error: function () alert ("Failure!");,);

Comme d'habitude, nous utilisons la méthode ajax pour envoyer un ping au service de recherche de Twitter. Comme dans l'exemple précédent, nous avons inclus une fonction de rappel pour surmonter la restriction interdomaine..

Un exemple de réponse, extrait directement de Twitter, ressemble à.

 "résultats": ["texte": "@ twitterapi http: \ / \ / tinyurl.com \ / ctrefg", "to_user_id": 396524, "to_user": "TwitterAPI", "from_user": "jkoum", "id": 1478555574, "from_user_id": 1833773,… tronqué…], "puisque_id": 0, "max_id": 1480307926, "refresh_url": "? puisque_id = 1480307926 & q =% 40twitterapi", "results_per_page": 15, " next_page ":"? page = 2 & max_id = 1480307926 & q =% 40twitterapi "," completed_in ": 0.031704," page ": 1," requête ":"% 40twitterapi "

En remarque, la méthode de recherche peut être utilisée de différentes façons vraiment.

  • ?q = Envato - Recherches pour les tweets contenant la chaîne Envato
  • ?q = # Envato - Recherches pour les hashtags de Envato
  • ?phrase = Envato + marché - Recherches pour les tweets contenant la phrase Envato marketplace
  • ?q = de: NETTUTS - Renvoie tous les tweets de NETTUTS
  • ?q = to: NETTUTS - Renvoie tous les tweets vers NETTUTS

Pourquoi d'autres méthodes ne sont pas couvertes

J'ai décidé de me limiter à montrer comment lire et écrire sur un service à l'aide de son API. De cette façon, je peux me concentrer uniquement sur ces méthodes spécifiques. Et aussi parce que la plupart des méthodes s'appuient sur ces bases. Si vous souhaitez renvoyer la chronologie d'un ami, vous devez simplement modifier l'URL et analyser la réponse en toute simplicité..

Il en va de même si vous souhaitez envoyer un message direct à un autre utilisateur ou en mentionner un autre. Les bases de l'affichage est toujours là. Vous avez juste besoin d'ajouter un paramètre ou deux pour que tout se produise. Cela n’a aucun sens de couvrir tout ce que je peux expliquer beaucoup plus clairement..


Conclusion

J'espère que vous avez appris davantage sur la façon de travailler avec l'API de Twitter aujourd'hui. Comme toujours, faites le moi savoir, via les commentaires, si vous avez besoin d'aide!