Poster des messages automatiquement sur Twitter et Facebook

Voici une librairie PHP que j’ai écrite durant mon dernier projet. Elle permet d’écrire des messages automatiquement sur Facebook et/ou Twitter.

Le principe est simple,Lors de  la publication d’une news sur votre site, vous envoyez un message automatiquement sur Facebook et Twitter pour le signaler à votre communauté. Tout en minimisant la taille des messages grâce au service fournis par Bit.ly

Voici la page du projet : http://code.google.com/p/socialnetwork-php

Il existe un ReadMe dans le wiki du projet, mais il est en anglais donc voici des explications en français et plus complètes.

Configurer les constantes de la classe

Récupérer les TOKEN du compte twitter.

L’utilisation de l’API de twitter oblige un utilisateur à se connecter en OAuth avant de publier un tweet. Cependant, notre script ne devra pas s’arrêter à cela, c’est pourquoi nous devons stocker les différentes token.

Premièrement, créer une application « Browser » sur Twitter : https://dev.twitter.com/apps/new

Aprés la création, récupérer la « Consumer Key » et la « Consumer Secret » dans la partie « OAuth ».

Mettez les donc dans les variables constantes :

const TWITTER_CONSUMER_KEY      = "";
const TWITTER_CONSUMER_SECRET   = "";

Pour récupérer la TOKEN et la TOKEN_SECRET, il vous faut cliquer sur « My Accesss Token » situé dans la sidebar à droite de la page de résumé sur twitter.

Mettez les deux TOKEN dans les constantes:

const TWITTER_TOKEN             = "";
const TWITTER_TOKEN_SECRET      = "";

Voila votre compte twitter est activé, et fin prêt à publier des tweets.

Attention pensez à créer l’application avec le compte twitter sur lequel vous souhaitez tweeter.

Récupérer les API Key de l’application facebook.

Pour Facebook, Rien de compliquer non plus.

Commencez par créer une FanPage. Ici : http://www.facebook.com/pages/create.php

Ensuite, rejoignez le groupe « Facebook Developpers » afin d’accéder à l’API : http://www.facebook.com/developers/

Cliquer sur « Créer une aplication », vous arriverez sur une fenetre de ce type:

Valider et vous voici sur une page pour modifier toutes les informations de votre Applications. (vous le ferez plus tard ;) ).

Cliquer sur « Enregistrer les modifications » .Et vous voila sur la page.

ici, vous allez récupérer:

  • Id de l’application
  • API Key
  • API Secret Key

Maintenant, nous allons gérer les permissions entre votre FanPage préalablement créée et votre Application. Afin qu’elle publie des messages sur le mur de votre FanPage.

Cliquez sur « Page du profil de l’application », puis sur « Ajouter à ma Page », dans le menu de gauche. Une popup va s’ouvrir et il vous suffira de cliquer sur « Ajouter à une Page » en face du nom de votre page. Attention à ne pas confondre votre Fan Page avec la page dédiée à votre application (celle-ci est automatiquement créée lors de la création de l’application).

Ensuite , il vous faut donner l’autorisation à votre application de poster sur votre page.

Remplacez l’ID_APPLICATION par celui récupérer auparavant.

http://www.facebook.com/connect/uiserver.php?app_id=ID_APPLICATION&next=http://www.facebook.com/&display=popup&locale=fr_FR&perms=publish_stream&enable_profile_selector=1&fbconnect=true&legacy_return=1&method=permissions.request

Sélectionnez UNIQUEMENT votre FanPage et cliquez sur « Autoriser ».


Voila la liaison est faite, il faut maintenant juste entrez les informations correspondantes dans les constantes de la classe.

const FB_ID_APPLICATION         = "";
const FB_API_KEY                = "";
const FB_API_SECRET             = "";
const FB_FAN_PAGE_ID            = "";

Récupérer les API Key de Bit.ly

Pour cela, il vous suffit juste d’aller sur votre compte Bit.ly et d’y récupérer votre API Key : http://bit.ly/a/account

Et de rentrer les informations dans les constantes:

>const BITLY_LOGIN               = "";
const BITLY_API_KEY             = "";

Voila la classe SocialNetwork est correctement configurer.

Utilisation

Pour Twitter:

SocialNetwork::postToTwitter($message);

où $message : Message à envoyer. Si un lien est présent, il sera automatiquement réduis avec le service de Bit.ly

Pour Facebook

SocialNetwork::postOnFacebookFanPage($message,$title,$caption,$picture,$description,$link,$action);

  • $message : Le message que vous souhaitez envoyer avec votre lien
  • $title : Le titre du lien
  • $caption : la légende du titre
  • $picture : la source de l’image
  • $description : Une courte description (sinon elle sera tronqué)
  • $link : le lien
  • $action : Un array d’action
$action = array(
array('name' => 'Action name', 'link' => 'http://')
);

Voici un exemple rapide

Pour Bit.ly

SocialNetwork::shortenURL($url);

Voila, vous avez tout. J’espere que cette article vous aura aider.
J’essaie de faire une nouvelle version dès que j’ai le temps avec plusieurs services de réductions d’URL et peut-être d’autres réseaux sociaux.

 

Choix du service de raccourcisseur d’url

Pour choisir, le service qui vous permettra de raccourcir vos url, il vous suffit de mettre à true le nom du service. La fonction s’occupera du reste.

Mise à jour

Google URL Shortener
Voici après demande de plusieurs personnes, j’ai enfin rajouté le support de l’url shortener de google.

Pour l’utiliser rien de plus compliquer Bit.ly, il vous faut d’abord aller sur

https://code.google.com/apis/console/

Là, vous créer un projet et vous activez le service URL Shortener

Ensuite, allez récupérer votre clef d’API dans le menu à droite, vous avez : « API Access ».

Et la récupérer votre API key:

Appel:

Si vous développez de nouvelles fonctionnalités, je suis pr^t à vous ouvrir le SVN afin que l’on agrémente cette classe de façon communautaire.

11 Commentaires

  1. Kevin 15:51, 14/06/2011  

    Tu as une erreur dans ta fonction ‘postOnFacebookFanPage’ du fichier ‘SocialNetwork.class.php’.
    Dans les paramètres tu mets $action alors que plus loin tu fais appel à $actions (avec un « s » en plus ».

  2. Remi 15:40, 21/06/2011  

    Je corrigerais çà dans la soirée ;) merci.

  3. Kouaw 00:49, 26/06/2011  

    Je viens de tomber sur ta classe et j’avoue pas mal :)

    il est vrai que permettre plusieurs services de réduction d’url voir mettre celui de google serai pas de refus:)

    Merci encore pour ce codes :)

  4. Manuel 21:07, 23/07/2011  

    Bonjour tu pourrais m’expliquer enfaites, ton application c’est pour , en l’ajoutant a la page , elle obligera les fan a la publier sur le profil de leurs amis ?? ou j’ai pas compris tu peux m’expliquer

  5. KiRk 02:43, 03/11/2011  

    Merci beaucoup pour ce tuto détaillé et la class qui va bien :)
    Par contre il y a toujours l’erreur signalée par Kevin dans le fichier SocialNetwork.class.php, qu’il faut donc corriger pour que tout fonctionne correctement.

  6. titzizou 00:34, 28/11/2011  

    Bonjour, Je viens d’utiliser tout ce joli bout de code mais j’ai un problème, quoi que je fasse j’ai le droit à ce message quand je tente de poster sur ma fanpage :
    The user hasn’t authorized the application to perform this action
    J’avou ne pas avori très clair le tuto pour les manips sur facebook. Si quelqu’un peux m’éclaireer sur ce que j’ai raté. Merci !

  7. Remi 09:50, 28/11/2011  

    J’ai corrigé le bug de la méthode « postOnFacebookFanPage ». Vous retrouverez l’update dans le repository Google Code.

  8. titzizou 01:15, 30/11/2011  

    J’ai continué à triturer le code et Facebook me refuse toujours de posté même après avoir utilisé le lien pour donner les droits à mon applications. J’ai vu dans un autre tuto un système de login, et en effet après m’être loggué ça a fonctionné. Quelqu’un serait ce qu’il faut rajouté à ces classes pour que cela fonctionne ? Ou ai-je mal fait quelquechose ? ;)

  9. Remi 12:26, 01/12/2011  

    Normalement, tout fonctionne, j’ai retesté… Aprés, tu peux essayer en rajoutant le scope : offline_access à ta demande de permission.

    http://www.facebook.com/connect/uiserver.php?app_id=ID_APPLICATION&next=http://www.facebook.com/&display=popup&locale=fr_FR&perms=publish_stream,offline_access&enable_profile_selector=1&fbconnect=true&legacy_return=1&method=permissions.request

    Est-tu sur d’utiliser une Fan Page et non un profil classique ? car pour l’instant, la classe ne fonctionne qu’avec les fanpages, je pense rajouter prochainement la publication sur un profil utilisateur.

  10. Pierre-Henri Poiret 19:14, 05/12/2011  

    Bonsoir,

    Tout d’abord, merci pour ce travail de qualité !

    De mon côté, après avoir bidouillé pour tenter de respecter toutes les étapes de ce tuto, Facebook ne m’autorise pas à poster…
    « The user hasn’t authorized the application to perform this action »

    Il semblerait que je n’ai pas les mêmes options quand je copie-colle le lien pour autoriser l’application à poster. Je peux juste « Autoriser »… Ce que j’ai bien sûr accepté.

    Y’a-t-il un délai pour que Facebook prenne en compte la création de l’application ?

    Merci.
    pH

  11. Remi 20:47, 30/01/2012  

    Je pense que ca doit venir soit de l’url qui a du changer avec les nouvelles versions de facebook … j’essaierai de trouver çà. Si tu trouvez une solution n’hesites surtout pas à me l’envoyer pour que je l’ajoute à l’article.

Laisser un commentaire