À compter du 16 août, Twitter ne prendra plus en charge le protocole d’authentification de base pour sa plate-forme. Cela signifie que le seul moyen d'authentifier les utilisateurs consiste à utiliser une application Twitter. Dans ce tutoriel, je vais vous montrer comment utiliser Twitter comme système d'authentification en un clic, comme nous l'avons fait avec Facebook..
Nous allons d'abord avoir besoin de configurer une nouvelle application Twitter.
http://localhost.com/twitter_login.php
(http: // localhost /
ne sera pas accepté car il n'a pas de nom de domaine). Maintenant, vous verrez l'écran comme indiqué ci-dessous.
Nous allons utiliser le La clé du consommateur et Secret du consommateur valeurs sous peu.
Maintenant que cela est fait, téléchargeons une bibliothèque. Comme nous allons coder avec PHP, il semble que le meilleur d'entre eux soit twitteroauth; mais si vous utilisez une autre langue, vous trouverez d'autres bonnes bibliothèques ici.
Trouvez le twitteroauth
répertoire dans le fichier zip et extrayez-le dans le dossier de votre application.
Enfin, comme nous utilisons Twitter pour authentifier les utilisateurs, nous avons besoin d’une table de base de données pour stocker ces utilisateurs. Voici un exemple rapide de ce que nous allons faire.
CREATE TABLE 'users' ('id' int (10) non signé NOT NULL AUTO_INCREMENT, 'oauth_provider', varchar (10), texte 'oauth_uid', texte 'oauth_secret', texte 'nomutilisateur', texte PRIMARY KEY (' id ')) ENGINE = MyISAM DEFAULT CHARSET = latin1;
Remarquez le oauth_token
et oauth_secret
des champs. OAuth de Twitter nécessite jeton
et un token_secret
des valeurs pour authentifier les utilisateurs, c'est pourquoi nous les incluons. Avec cela, nous avons terminé avec la configuration!
Dans cette étape, nous ferons trois choses:
Le flux de travail OAuth commence par générer une URL pour la demande. l'utilisateur est redirigé vers cette URL et une autorisation lui est demandée. Après l’accorder, l’application redirige vers notre serveur avec deux jetons dans les paramètres d’URL, nécessaires à l’authentification..
Commençons par inclure la bibliothèque et démarrer un gestionnaire de session.
require ("twitteroauth / twitteroauth.php"); session_start ();
Après cela, créons une nouvelle instance de TwitterOAuth, en lui donnant la clé de consommateur et le secret de consommateur que Twitter nous a donnés lors de la création de l'application. Ensuite, nous demanderons les jetons d'authentification, les enregistrerons dans la session et redirigerons l'utilisateur vers Twitter pour autorisation..
// L'instance TwitterOAuth $ twitteroauth = new TwitterOAuth ('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET'); // Demande de jetons d'authentification, le paramètre correspond à l'URL vers laquelle nous allons être redirigé $ request_token = $ twitteroauth-> getRequestToken ('http://localhost.com/twitter_oauth.php'); // Enregistrement dans la session $ _SESSION ['oauth_token'] = $ request_token ['oauth_token']; $ _SESSION ['oauth_token_secret'] = $ request_token ['oauth_token_secret']; // Si tout se passe bien… if ($ twitteroauth-> http_code == 200) // Générons l'URL et redirigeons $ url = $ twitteroauth-> getAuthorizeURL ($ request_token ['oauth_token']); en-tête ('Lieu:'. $ url); else // C'est une mauvaise idée de tuer le script, mais nous devons savoir s'il y a une erreur. mourir ('Quelque chose de faux est arrivé.');
Enregistrez-le sous twitter_login.php
, aller à http://localhost.com/twitter_login.php
ou quel que soit votre nom d'hôte local. Si tout se passe correctement, vous devriez être redirigé vers twitter.com, et vous devriez voir quelque chose comme ça..
Cliquez sur Autoriser et vous serez redirigé vers http://localhost.com/twitter_oauth.php
-- depuis que nous avons défini cette URL comme paramètre dans le getRequestToken
déclaration. Nous n'avons pas créé ce fichier, il devrait donc générer une erreur. Créez ce fichier, puis incluez la bibliothèque et démarrez une session, comme dans le premier fichier..
Après cela, nous aurons besoin de trois choses:
Donc, la première chose à faire dans ce script est de valider ces données et de les rediriger si l’une de ces variables est vide.
if (! empty ($ _GET ['oauth_verifier'])) &&! vide ($ _SESSION ['oauth_token']) &&! vide ($ _SESSION ['oauth_token_secret']))) // Nous avons tout ce dont nous avons besoin else // Quelque chose manque, retournez à l'en-tête 1 en-tête ('Location: twitter_login.php');
Maintenant, si tout est défini, à l'intérieur du conditionnel, nous allons créer l'instance TwitterOAuth, mais avec les jetons que nous venons de recevoir comme troisième et quatrième paramètres; après cela, nous aurons le jeton d'accès, qui est un tableau. Ce jeton est celui que nous allons enregistrer dans la base de données. Enfin, nous ferons un test rapide pour voir si tout se passe bien.
// instance TwitterOAuth, avec deux nouveaux paramètres que nous avons dans twitter_login.php $ twitteroauth = new TwitterOAuth ('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', $ _SESSION ['oauth_token'], $ _SESSION ['oauth_token_secret']); // Demandons le jeton d'accès $ access_token = $ twitteroauth-> getAccessToken ($ _GET ['oauth_verifier']); // Sauvegarde-le dans une session var $ _SESSION ['access_token'] = $ access_token; // Récupérons les informations de l'utilisateur $ user_info = $ twitteroauth-> get ('account / verify_credentials'); // Imprimer les informations de l'utilisateur print_r ($ user_info);
Si rien ne va pas, le print_r
devrait montrer les données de l'utilisateur. Vous pouvez obtenir l'identifiant de l'utilisateur avec $ user_info-> id
, son identifiant avec $ user_info-> nom_écran
; il y a un tas d'autres informations là aussi.
Il est très important de réaliser que le oauth_verifier
n'a pas été utilisé avant cela. Si vous voyez correctement les informations de l'utilisateur, puis rechargez la page, le script génère une erreur car cette variable a été utilisée. Il suffit de retourner à twitter_login.php
et il générera automatiquement un autre jeton frais.
Maintenant que nous avons les informations de l'utilisateur, nous pouvons les enregistrer et les enregistrer, mais nous devons d'abord vérifier si elles existent dans notre base de données. Commençons par nous connecter à la base de données. Ajoutez ces lignes au début du script.
mysql_connect ('localhost', 'YOUR_USERNAME', 'YOUR_PASSWORD'); mysql_select_db ('YOUR_DATABASE');
Modifiez les informations de la base de données si nécessaire. Maintenant, juste en dessous de l'endroit où nous récupérons les informations de l'utilisateur, nous devrons rechercher l'utilisateur dans notre base de données. S'il n'est pas là, nous entrerons les informations. Si l'utilisateur a été enregistré, nous devons mettre à jour les jetons, car Twitter en a généré de nouveaux et ceux que nous avons dans la base de données sont maintenant inutilisables. Enfin, nous définissons les informations de l'utilisateur sur les vars de session et nous redirigeons vers twitter_update.php
.
if (isset ($ user_info-> error)) // Quelque chose ne va pas, retournez à l'en-tête 1 ('Location: twitter_login.php'); else // Trouvons l'utilisateur par son ID $ query = mysql_query ("SELECT * FROM utilisateurs WHERE oauth_provider = 'twitter' AND oauth_uid =". $ user_info-> id); $ result = mysql_fetch_array ($ query); // Si non, ajoutons-le à la base de données if (empty ($ result)) $ query = mysql_query ("INSERT INTO users (oauth_provider, oauth_uid, username, oauth_token, oauth_secret) VALUES ('twitter', $ user_info- > id, '$ user_info-> screen_name', '$ access_token [' oauth_token ']', '$ access_token [' oauth_token_secret ']') "); $ query = mysql_query ("SELECT * DES utilisateurs WHERE id =". mysql_insert_id ()); $ result = mysql_fetch_array ($ query); else // Mettre à jour les jetons $ query = mysql_query ("UPDATE utilisateurs SET oauth_token = '$ access_token [' oauth_token '], oauth_secret =' $ access_token ['oauth_token_secret'], 'WHERE AND oauth_uid = $ user_info-> id "); $ _SESSION ['id'] = $ result ['id']; $ _SESSION ["nom d'utilisateur"] = $ result ["nom d'utilisateur"]; $ _SESSION ['oauth_uid'] = $ result ['oauth_uid']; $ _SESSION ['oauth_provider'] = $ result ['oauth_provider']; $ _SESSION ['oauth_token'] = $ result ['oauth_token']; $ _SESSION ['oauth_secret'] = $ result ['oauth_secret']; en-tête ('Location: twitter_update.php');
Notez que ces requêtes ne sont pas validées. si vous les laissez tels quels, vous laissez votre base de données vulnérable. Enfin, sous la connexion à la base de données, nous devrions définir une vérification pour vérifier que l'utilisateur est connecté..
if (! empty ($ _SESSION ['nom d'utilisateur']])) // l'utilisateur est connecté, en-tête de redirection ('Location: twitter_update.php');
Vous pouvez maintenant saluer l'utilisateur par son nom d'utilisateur.
Bonjour =(!empty($_SESSION['username']) ? '@' . $_SESSION['username'] : 'Guest'); ?>
Passons au côté amusant: mise à jour, suivi et lecture.
Il existe plus de vingt catégories de ressources disponibles: chronologie, tweets, utilisateurs, tendances, listes, messages directs, etc. Chacune de ces méthodes est riche en méthodes, vous pouvez toutes les vérifier dans la documentation officielle. Nous allons aborder les bases, car la plupart de ces fonctionnalités sont accessibles de la même manière..
Comme pour les deux autres scripts, nous devrons créer l'instance TwitterOAuth, y compris les variables de la session..
if (! empty ($ _SESSION ['nom_utilisateur'])) $ twitteroauth = nouveau TwitterOAuth ('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', $ _SESSION ['oauth_token'], $ _SESSION ['oauth_secret']);
Nous allons commencer par la chronologie de l'utilisateur. La référence nous dit que le chemin est statuts / home_timeline
; ignore le version et format, la bibliothèque s'en occupera.
$ home_timeline = $ twitteroauth-> get ('statuses / home_timeline'); print_r ($ home_timeline);
Cela vous donnera la chronologie. Vous pouvez récupérer chaque article avec un pour chaque
boucle. Cependant, la référence spécifie certains paramètres optionnels tels que compter
, ce qui limite le nombre de tweets à récupérer. En réalité, obtenir
Le second paramètre de est un tableau de toutes les options nécessaires. Si vous voulez récupérer les quarante derniers tweets, voici le code:
$ home_timeline = $ twitteroauth-> get ('statuses / home_timeline', array ('count' => 40));
En outre, vous pouvez voir le calendrier de quelqu'un d'autre, tant qu'il n'est pas protégé. statuts / user_timeline
nécessite un identifiant d'utilisateur ou un nom d'écran. Si vous voulez vérifier la chronologie de @nettuts, vous devez utiliser l'extrait de code suivant:
$ nettuts_timeline = $ twitteroauth-> get ('statuses / user_timeline', array ('screen_name' => 'nettuts'));
Comme vous pouvez le constater, après l'authentification, la lecture des délais est un jeu d'enfant..
Avec les amitiés, vous pouvez vérifier si un utilisateur en suit un autre, ainsi que suivre ou ne plus suivre d’autres utilisateurs. Cet extrait vérifiera si vous me suivez et créera le suivi sinon.
Mais d'abord, vérifiez la amitiés / existe
et amitiés / créer
référence. Remarquez quelque chose? amitiés / créer
méthode est POST. Heureusement, la bibliothèque comprend un poster()
fonction, qui fonctionne comme le obtenir()
une fonction; la principale différence est que obtenir()
est pour la lecture et poster()
est pour créer, supprimer ou mettre à jour.
Quoi qu'il en soit, amitiés / existe
nécessite deux paramètres: utilisateur_a
et utilisateur_b
, et amitiés / créer
nécessite un seul, soit Nom de l'écran
ou identifiant d'utilisateur
.
$ follow_faelazo = $ twitteroauth-> get ('amitiés / existe', array ('user_a' => $ _SESSION ['nom_utilisateur'], 'user_b' => 'faelazo')); if (! $ follow_faelazo) echo 'Vous ne suivez PAS @faelazo!'; $ twitteroauth-> post ('friendships / create', array ('screen_name' => 'faelazo'));
Vous pouvez ne plus suivre un utilisateur avec essentiellement le même code qui crée un suivi, il suffit de remplacer créer
avec détruire
:
$ follow_faelazo = $ twitteroauth-> get ('amitiés / existe', array ('user_a' => $ _SESSION ['nom_utilisateur'], 'user_b' => 'faelazo')); if ($ follow_faelazo) echo 'Vous suivez @faelazo! Continuer à ne plus suivre… '; $ twitteroauth-> post ('friendships / destroy', array ('screen_name' => 'faelazo'));
C’est probablement la section la plus intéressante, car c’est le cœur de Twitter: publier une mise à jour, comme vous l’auriez imaginé, est assez simple. Le chemin est statuts / mise à jour
, la méthode est POST (puisque nous ne lisons pas), et le seul argument requis est statut
.
$ twitteroauth-> post ('statuses / update', array ('status' => 'Hello Nettuts +'));
Maintenant, allez sur votre page de profil Twitter et vous verrez votre tweet.
Retweetons la mise à jour de @Nettuts pour annoncer le concours HTML 5; l'identifiant de statut est 19706871538
et la référence nous dit que le chemin est statuts / retweet /: id
, où le : id
la partie est l'identifiant de statut que nous allons retweeter. La méthode est POST et ne nécessite pas de paramètres supplémentaires.
$ twitteroauth-> post ('statuses / retweet / 19706871538');
Pour supprimer un tweet, vous devez transmettre l'identifiant du statut que vous allez détruire dans le premier paramètre, comme pour le retweet. Si l'identifiant du tweet est 123456789, le code à détruire sera.
$ twitteroauth-> post ('statuses / destroy / 123456789');
Bien entendu, ce code ne peut supprimer que les tweets créés par l'utilisateur authentifié.
L'API de Twitter est assez facile à comprendre. c'est beaucoup plus documenté que même sur Facebook (même si Facebook offre une bibliothèque interne). Malheureusement, l'authentification n'est pas aussi fluide qu'on pourrait l'espérer, en fonction des données de session..
Une chose à noter est qu'une fois qu'un utilisateur de Twitter a été autorisé (en supposant que l'application dispose d'autorisations de lecture et d'écriture), vous avez un contrôle important sur ce compte. Si vous modifiez quelque chose au nom de l'utilisateur sans son autorisation, vous créerez des problèmes. Utilisez-le avec prudence!
Les modifications de l'API arrivant sur Twitter nieront l'authentification de base. Twitter cherche à mettre fin aux innombrables escroqueries qui poussent les utilisateurs à renoncer à leurs identifiants de connexion. OAuth est la solution. et, si vous avez suivi le didacticiel Facebook Connect, vous pouvez désormais fournir à votre site Web ou à vos applications une connexion rapide sans informations d'identification, en choisissant parmi les deux réseaux sociaux les plus utilisés. À quel point cela est cool?