Oauth, WordPress & Twitter
Le truc qui tombe à point. Genre on se promet de tenir un blog de manière sérieuse. Genre on cherche des sujets sympathiques, déjà pour soit, mais également qui le seraient assez pour intéresser d’autres personnes. Et genre paf !
En effet, lors de la mise à jour des composants de ce misérable journal, il a fallu s’occuper également des plugins qui l’accompagnent. L’un deux, WP to Twitter, s’est parfaitement mis à jour mais m’a gratifié d’un joli message d’erreur lors de ses infructueux essais de connexion à mon compte.
De mon temps …
Avant le changement de méthode d’autorisation dans Twitter, il était fréquent d’avoir à fournir ses identifiants Twitter aux applications tierces que l’on souhaitait utiliser pour manipuler son compte. Renseigner son nom d’utilisateur et son mot de passe pour chacune de ces applications, sans vraiment faire attention à ce qu’elle pouvait en faire, n’était pas très malin. Et lors d’un changement de mot de passe, il était impératif de le renseigner à nouveau partout. Assez pénible.
Les gars de chez Twitter, n’étant pas des gamins du matin, ont décidé d’imposer l’utilisation de OAuth, un produit de leur cru, utilisé lors des interactions avec leur API et leurs comptes. En gros, un système d’autorisation ouvert, permettant à des applications tierces de manipuler vos données sans connaître un caractère de vos identifiants. OAuth est à la délégation d’accès ce qu’OpenID est à la délégation d’authentification. Ça vaut vraiment la peine de se documenter sur le sujet tant c’est intéressant.
Bref, ça n’existait pas avant, grâce aux petites mains de Twitter, c’est un protocole plutôt bien foutu, qui complète à merveille OpenID.
Tout ça pour ça ?
Le problème, avec WP to Twitter et OAuth ? En fait aucun. Une fois jeté un coup d’oeil dans le source du plugin, parcouru la documentation et les specs de OAuth, bah on sait plus quoi faire pour que ça fonctionne. Ce satané message d’erreur PHP:
Fatal error: Class ‘OAuthSignatureMethod_HMAC_SHA1’ not found
me brise toujours les gonades. Le paquet PECL OAuth est bien installé, dans sa dernière version stable, et PHP le charge parfaitement.
PHP étant un interpréteur magnifique permettant un debug aisé, simple et efficace, je m’arme de mon print() et hop, me voilà … pas avancé du tout. Au passage, ceux qui aimeraient me parler de xdebug ou de trucs du genre, je les invite courtoisement à continuer à faire du PHP dans leur petit coin sans ouvrir leur clapet. Je hais ce langage.
En dernier recours, je décide de dégager un contrôle sur la classe OAuthException, dans le fichier OAuth.php du plugin, histoire de voir ce que ça donne. C’est à dire enlever:
if (!class_exists('OAuthException')) {}
Et là bim ! Tout fonctionne. Mais ça me dit pas pourquoi ça merde. Pas plus de réussite en manipulant la classe OAuthException. Laissant de côté ce souci pour mettre à jour le plugin d’un autre blog hébergé sur un autre serveur, je me rend compte que le problème n’existe pas. Pas besoin de changer une seule ligne de code. Quelques tests plus tard, le fautif apparait, au final, très standard: PHP.
En effet, PHP, en version 5.2.14 accompagné du package PECL oauth en version 1.0.0 merdoit complètement. Dans d’autre version non.
PHP: je te conchie…