Créer une Application Twitter pour utiliser dans SPIP

Depuis le 9 juin 2013, il n’est plus possible d’accéder à l’API Twitter sans authentification. Cela passe par la création d’une Application Twitter qui disposera de ses clés secrètes pour accèder à l’API Twitter.

EDIT : il faut maintenant en plus avoir un compte Twitter « Developpeur » (je ne sais pas quelles sont les implications, les anciennes apps pouvant encore être gérées avec un compte normal)

Voici les étapes détaillées de la création de l’Application et de la configuration pour le plugin Twitter.

Créer une Application sur Twitter

Vous devez tout d’abord créer une nouvelle application.

Soyez certain d’être connecté pour cela avec votre compte Twitter qui sera le propriétaire de l’application (ce qui ne préjuge pas du compte Twitter que vous utiliserez ensuite pour Twitter).

Renseignez bien le nom, descriptif, l’url de votre site, ainsi qu’une URL de Callback qui correspond à l’URL ecrire de votre site : http://www.example.org/ecrire/ ou https://www.example.org/ecrire/ si votre site utilise https.

Si l’URL de callback n’est pas correcte, vous aurez une erreur « Forbiden »

Par défaut, l’application n’a le droit que de lire les Tweets de votre timeline et des autres utilisateurs. Cela suffit si vous voulez juste afficher une timeline sur votre site.

Vous devez aussi décrire à quoi va servir votre app en au moins 100 caractères. Pour info quelque chose comme ça semble convenir :

App is used by the website to send a tweet when publishing a new post, announcing the new post. It can also be used to send manually a tweet by the editorial team of the website.

Si vous souhaitez aussi envoyer des Tweets depuis votre site SPIP, il faut modifier les droits en allant dans l’onglet Settings et cocher le choix Read and Write de Application Type pour lui donner le droit de poster des nouveaux messages.

Une fois que vous avez validé, il faut vérifier que Twitter a bien générer des Access Token (jetons) pour permettre d’utiliser l’API. Dans l’onglet API Keys vérifiez la présence de ces Access Token ou générez les à l’aide du bouton à cet effet.

Vous pouvez alors récupérer le API key et le API secret de votre application et les renseigner dans le formulaire de configuration du plugin Twitter :

Enregistrez la configuration, puis cliquez sur le bouton Ajouter un compte Twitter qui apparait alors :

Vous arrivez sur une page qui vous demande « Autoriser le nom de votre application à utiliser votre compte ». Identifiez-vous si nécessaire, puis cliquez sur le bouton « Autoriser l’application ».

Vous revenez normalement sur la page de configuration du plugin Twitter, et le compte que vous venez d’ajouter est maintenant affiché :

Un compte Twitter pour essayer tout ça sans risque

Pour tester le bon fonctionnement du plugin vous pouvez utiliser le compte d’identifiant spipotest / passe spipotest1.
Les notifications seront visibles sur http://twitter.com/spipotest, par exemple : une notification d’envoi de forum ou le passage d’un article en mode proposé à la publication et le passage en statut publié de cet article

Pourquoi c’est si compliqué ?

Quand vous utilisez un service qui se connecte sur Twitter, d’habitude vous n’avez pas besoin de créer une Application Twitter avec toutes ces clés secrètes compliquées. Vous avez juste à autoriser le service à utiliser votre compte.

Pourquoi on ne peut pas faire aussi simple ?

La réponse politique simple : parce que Twitter fait tout pour freiner/bloquer l’utilisation de sa plateforme par des applications externes pour vous forcer à utiliser son site web ou son application et voir les publicités qu’ils diffusent.

La réponse technique détaillée et compliquée :
Parce que le plugin Twitter pour SPIP est distribué en Open Source : tout son code est visible par tout le monde. Comme Twitter n’accepte pas qu’on divulgue les clés secrètes d’une Application, on ne peut pas les intégrer dans le plugin Twitter.

Évidemment, un service ou un logiciel propriétaire n’a pas ce problème !
Il n’y a donc pas d’autre solution pour vous que de créer vos propres clés et de les configurer une fois pour toute dans le plugin.

Vous pouvez utiliser la même application avec les mêmes clés pour plusieurs sites, cela ne pose aucun problème. Gardez simplement les clés secrètes pour vous !
Vous retrouverez vos applications déjà existantes à l’adresse https://developer.twitter.com/en/apps/

Apercu de la configuration requise en 2021

Discussion

13 discussions

  • Thibaut

    Impossible d’ajouter un compte dans la config du plugin. A chaque fois j’ai twitter qui me jette avec ce message : Hé, là ! doucement.
    Le jeton de demande pour cette page est invalide. Il se peut qu’il ait déjà été utilisé, ou qu’il ait expiré car il est trop ancien. Veuillez revenir sur le site ou l’application qui vous a amené ici et réessayez ; ce n’était probablement qu’une erreur.

    Pour tant tout bien configuré. Ajoutez aussi un callback url dans la config dev de twitter. Modifier le code source du plugin suite à ce que j’ai lu sur le site contrib.spip

    Bref je sèche là.

    Répondre à ce message

  • 3

    Bonjour,
    Je viens de réussir toute la procédure… sauf que les tweets n’apparaissent pas sur le compte !
    Voir les captures d’écran ci-dessous, qui apportent la confirmation que j’ai bien suivi la procédure avec succès, mais pas d’explication…

    Est-ce que ce pluggin fonctionne toujours ? Quelqu’un a-t-il une idée ?? Help ???
    Et merci d’avance !

    • Oui ce plugin fonctionne toujours, une fois qu’on a réussi à le configurer complètement comme tu l’as fait.

      Attention, sur ton screenshot c’est le formulaire qui permet de modifier le tweet qui sera envoyé plus tard (à la publication de l’article), à moins que tu aies cliqué sur « Envoyer maintenant » ?

      Pour vraiment envoyer des tweets manuellement il vaut mieux utiliser la page que l’on trouve dans le menu « Publication > Twitter »

    • Bonjour,

      Merci de ta réponse et de la bonne nouvelle…

      Mais mon problème est que les tweets n’arrivent manifestement pas jusqu’à twitter, ou bien sont refusés (silencieusement), que j’utilise la publication manuelle ou automatique…

      Je viens d’en faire un pour tester avec la publication manuelle, et toujours rien sur https://twitter.com/RevueHerodote.

      Je ne sais pas où chercher pour résoudre ce problème !

    • Bonjour, et merci pour cette réponse rapide !

      Bonne nouvelle donc, mais pourtant rien n’apparaît sur mon compte twitter : https://twitter.com/RevueHerodote !

      Je viens de refaire le test en utilisant la page dédiée aux publications manuelles. Le tweet semble bien envoyé, mais n’arrive jamais jusqu’à twitter.

      Que faire ?? !Merci

    Répondre à ce message

  • 1
    Didier C.

    Bonjour,

    j’ai le même problème que beaucoup d’autres.

    le plugin a parfaitement fonctionné depuis 2015 et puis... cela ne fonctionne plus.

    J’ai le message indiqué

    • Cf mes commentaires ici ou dans l’autre article : il devient de plus en plus difficile d’avoir une clé API valide, twitter ferme de plus en plus son API pour essayer de monétiser tous les utilisateurs.

      Bref, j’y peux rien, il faut se plaindre chez eux ou (surtout) arrêter d’utiliser Twitter et passer à des plateformes libres comme Mastodon

    Répondre à ce message

  • 2

    Salut,

    j’essayais depuis plusieurs jours d’ajouter un compte dans la config, mais nada, la config m’affichait un erreur 403.

    J’ai pensé que c’était peut être un problème temporaire mais non.

    En creusant, je me rends compte que Twitter exige maintenant que la Callback URL ajoutée dans la config de l’app soit strictement la même que celle utilisée lors de l’appel oauth.

    Du coup, en mettant https://domain.tld/ on se fait jeter, et l’erreur n’est pas « 403 forbidden », comme indiqué, mais « 415 Callback URL not approved for this client application. Approved callback URLs can be adjusted in your application settings ».

    En mettant https://domain.tld/ecrire/?exec=configurer_twitter dans la Callback URL, ça re tombe en marche.

    Répondre à ce message

  • 1
    Delaney

    Bonjour,

    Je rencontre un problème bien handicapant pour mon site (hébergé chez OVH), il m’est impossible d’ajouter mon compte Twitter dans le plugin Twitter. Cela me retourne toujours le même message d’erreur :

    Erreur de configuration de l'Application.
    Le serveur a repondu 401 Unauthorized
    Avez-vous bien rempli le champ "Callback URL" de votre application Twitter ?

    Il est de fait bien rempli, j’ai essayé de régénérer les clefs, désinstaller/réinstaller le plugin… rien n’y fait.
    Je précise qu’un autre site, hébergé chez Gandi, utilise le plugin sans aucun problème.

    Je suis à court d’idées, merci d’avance pour vos solutions éventuelles.

    • Bonjour,
      En fait il faut mettre l’arborescence dans l’URL de retour : http://mondomaine.com/spip/ (et pas seulement mondomaine.com) ou bien paramétrer les htaccess... mois j’ai simplement rajouté le chemin

    Répondre à ce message

  • 3

    Bonjour,

    J’ai bien lu et relu le tuto, entré les codes, généré les token etc etc ... et dans la config au moment d’ajouter le compte twitter :
    Erreur de configuration de l’Application.
    Le serveur a repondu 401 Unauthorized
    Avez-vous bien rempli le champ « Callback URL » de votre application Twitter ?

    Oui oui le callback est renseigné, bref tout est bon ... Quand je créé le widget directement de twitter, pas de soucis ... alors à votre avis ?

    • Je viens de trouver la solution à ce problème !
      Depuis l’espace pour développeur de Twitter, il faut aller dans l’onglet « Settings » et décocher la case « Enable Callback Locking » qui est cochée par défaut. Ensuite la procédure indiquée plus haut fonctionne bien.

    • Même problème côté SPIP : Erreur : Cette fonctionnalité est temporairement indisponible
      Le serveur a repondu 401 Unauthorized
      Avez-vous bien rempli le champ « Callback URL » de votre application Twitter ?

      Mais quand je vais voir https://twitter.com/settings/applications, mon application est bien dans la liste des autorisées, avec une heure de création de l’autorisation qui montre bien qu’elle vient d’être crée.

      b_b sur IRC m’a invité à vérifier l’heure du serveur.
      Elle est bonne.
      Un indice peut-être : l’heure de création affichée du côté de twitter est toujours de 1h dans le passé par rapport à l’heure locale.

    • Delaney

      Bonjour RealET, avez-vous pu trouver une solution à ce problème, j’ai le même et je ne vois aps de solution

    Répondre à ce message

  • 1

    Bonjour à tous,

    Une question bête dont je n’arrive pas à trouver la réponse. Je sais comment faire pour JE publie sur MON twitter à partir de PHP, pour que QUELQU’UN publie ce que JE veux sur SON Twitter après inscription mais je n’arrive pas à comprendre QUOI stocker du compte de ce quelqu’un et comment l’utiliser, sans qu’il clique sur quoi que ce soit disons, par exemple, une heure plus tard. Déjà, est-ce possible ? Si oui, connaissez-vous un tuto qui l’expliquerait en détails. Je précise, ce que je veux savoir, c’est si je peux publier MON message sur le Twitter de QUELQU’UN qui se serait préalablement inscrit à MON application sans qu’il n’ait à intervenir..

    Merci

    • Ayant eu le même message après avoir activé sur mon serveur le module php5-oauth, je suppose que c’est ton cas aussi.

    Répondre à ce message

  • Bonjour j’ai bien les extensions OpenSSL et cURL sur mon serveur mais aucun tweet ne s’affiche, alors qu’en local tout fonctionne bien, une idée ?

    Répondre à ce message

  • Reynald Beaufort

    Bonjour,

    Il m’est impossible de paramétrer un nouveau compte Tweeter une page s’affiche avec ce message d’erreur :
    « Fatal error : Cannot redeclare class OAuthException in /home/www/187a865c3ed7b4f4f8246af5c43da09a/web/plugins/auto/twitter-v1/inc/OAuth.php on line 36 »
    L’inretuction correspondante du fichier OAuth.php est :

    /* Generic exception class
     */
    class OAuthException extends Exception {
      // pass
    }

    Que dois-je faire ?

    Répondre à ce message

  • Je plussoie à la défaillance constatée lors de la connexion à Twitter !

    Le plugin a bien marché pendant quelques jours et vers le 16 juillet !! plouf plouf !!

    C’est tombé en rade !!

    Est-ce twitter qui a changé quelque chose ? Sûrement car avant il fonctionnait très bien.

    Si l’auguste concepteur de ce plugin bien pratique peut se pencher sur le cas !! je serai parmi les ravis !!

    Amen !!!

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom