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.
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:
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.
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);
où
$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.
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.
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 ».
Je corrigerais çà dans la soirée
merci.
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
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
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.
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 !
J’ai corrigé le bug de la méthode « postOnFacebookFanPage ». Vous retrouverez l’update dans le repository Google Code.
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 ?
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.requestEst-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.
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
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.
Bonjour,
Pour ma part, tout fonctionne parfaitement.
Cependant, on vient de me faire remarquer que le lien « Partager » afficher sur toutes les applications Facebook, n’est pas afficher lorsqu’on utilise le script. Les fans de la page ne peuvent donc pas partager les infos sur leur profil.
Est-ce qu’il n’y aurait pas un argument manquant ou quelque chose dans le genre ?
En espérant que vous suivez toujours les commentaires de ce projet
Merci.
Bonjour,
Je n’ai pas fait attention à ce lien merci de faire remonter çà. Par contre, je n’ai pas trouvé de specs mais si vous trouvez une solution, pouvez-vous me la remonter ?
Bonjour,
Je reviens vers vous pour partager la solution que j’ai trouvée. En fait, j’utilise le tableau $action pour définir le lien « Partager ». Voici le code que j’utilise :
$action = ‘{ « name »: « Partager », « link »: « http://www.facebook.com/share.php?u=’.urlencode($url).’ » }’;
où $url est l’adresse complète de la page à partager.
Ainsi, à coté de l’icône de l’application, et avant le « via « nom_de_l’application » », un lien Partager s’afficher et permet aux utilisateur de partager sur leur mur ou avec leur amis. Pour avoir un aperçu de résultat : http://www.facebook.com/ForzaMotorsportFrance
Pour ma part, avant cela, j’utilisais $action pour afficher un lien « En savoir plus » renvoyant vers $url. A voir quelle méthode est la plus utile / efficace
C’est très intéressant, mais j’essaye de ranger les sources dans mon wordpress, et je ne m’en sors pas
Quelques conseils ? merci
Bonjour,
Que souhaites-tu faire transformer le code source pour en faire un plugins WordPress ?
Un plugin pourquoi pas, mais je peux aussi utiliser un Php Widget pour y intégrer un peu de code … en fait ce que je voudrais faire c’est : paramétrer par programmation le texte envoyé sur Facebook en fonction de l’article ou de la page affichée …
Merci pour votre aide …
Par exemple : je dois pouvoir mettre tout le code de ta classe dans le fonctions.php de mon Thème Child ? en corrigeant bien entendu l’appel à tes sources extérieures en fonction de mon ftp sur mon site ? est ce que c’est une bonne piste ? si les classes sont dans mon fonctions.php, je dois pouvoir les appeler de n’importe ou ? ca vaut le coup d’essayer ?
Bon j’ai essayé
Voilà ou j’en suis :
J’ai installé et j’appelle la classe :
include_once(get_bloginfo(« siteurl »). »/wp-content/socialnetwork/SocialNetwork.class.php »);
et dans la classe :
require get_bloginfo(« siteurl »). »/wp-content/socialnetwork/ ». »modules/twitter/twitteroauth.php »;
require get_bloginfo(« siteurl »). »/wp-content/socialnetwork/ ». »modules/facebook/facebook.php »;
Puis j’ai paramétré les var FB tant bien que mal, mais je pense plutôt bien. Ainsi que les Bitly …
Et maintenant, je ne sais plus quoi faire.
Cela :
$message= »Le Petit Chat … »;
$title = « Le titre ??? »;
$caption= »";
$picture= »";
$description= « La description … »;
$link = « http://www.facebook.com/TelephonerMoinsCher »;
$action = array(
array(‘name’ => ‘Action name’, ‘link’ => ‘http://’)
);
Jusqu’à là, sans problême.
Et après : cela, ou ?
dans un quelque part dans mon widget php ?
// SocialNetwork::postOnFacebookFanPage($message,$title,$caption,$picture,$description,$link,$action);
Merci pour votre aide.
Serait-il possible d’actualiser le tuto ? Concernant Facebook, toute l’administration a changé, je ne retrouve aucun truc et je n’arrive pas a faire fonctionner mon script…
Merci d’avance
L’intégration dans Facebook a complètement changé, c’est pourquoi ce script ne fonctionne « pour l’instant » plus avec Facebook.
Malheureusement, je n’ai pas assez de temps pour me pencher sur ce problème, si quelqu’un trouve une solution
Bonsoir,
Auriez-vous du nouveau concernant votre script et Facebook ?
Je voudrais adapter votre code sur un module modx. (Pour toute la communauté)
Bonjour,
Le script fonctionnait très bien avec Facebook jusqu’au début de la semaine. Malheureusement, depuis quelques jours, il me retourne l’erreur suivante : « (#200) The user hasn’t authorized the application to perform this action »
Cela laisse sous entendre que l’application créée n’a pas (ou plus…) les droits d’écriture sur la page fan, et j’ai eu beau gratter dans les différentes options, je n’ai pas réussi à le faire re-fonctionner.
Du coup, j’ai opté pour une autre solution (http://jorgealbaladejo.com/2011/06/13/publish-to-facebook-page-or-applications-wall-with-php/) pour laquelle la classe Facebook.php n’est plus nécessaire puisque le script utilise un token. Voici, dans les grandes lignes, comment ça fonctionne :
1. Créer une application Facebook basique sur https://developers.facebook.com/apps en indiquant simplement le nom de l’application et l’url de votre site.
2. Récupérer l’App ID et l’App Secret de votre application et se rendre sur :
https://www.facebook.com/dialog/oauth?client_id=APP_ID&client_secret=APP_SECRET&redirect_uri=URL_DE_VOTRE_SITE&scope=publish_stream,offline_access,read_stream,manage_pages&response_type=token
3. Vous allez être rediriger vers votre site, et dans l’url devrait être affiché un token (du type #access_token=TOKEN).
4. Copiez la longue chaine de caractère et rendez-vous sur :
https://graph.facebook.com/me/accounts?access_token=TOKEN
5. Vous obtenez alors la liste des pages et applications donc vous êtes l’administrateur. Trouvez dans la liste la page Fan qui vous intéresse et récupérez le token associé (du type « access_token »: « TOKEN »).
6. Dans le fichier « socialclass.php », après la ligne :
> const FB_API_SECRET = ’123456789′;
rajouter la ligne :
> const FB_TOKEN = ‘TOKEN’ // Remplacer TOKEN par le token de l’étape 5.
7. Dans le fichier « socialclass.php », dans la fonction postOnFacebookFanPage(), ne conserver que le tableau $attachment, puis ajouter à la suite :
> $attachment['access_token'] = self::FB_TOKEN;
> $curl = curl_init();
> curl_setopt($curl, CURLOPT_URL, ‘https://graph.facebook.com/’.self::FB_FAN_PAGE_ID.’/feed’);
> curl_setopt($curl, CURLOPT_POST, 1);
> curl_setopt($curl, CURLOPT_POSTFIELDS, $attachment);
> curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
> $return = curl_exec($curl);
> curl_close($curl);
8. Il ne reste plus qu’à ajouter votre application à la liste des application de votre page Fan (je ne suis pas certain que cette étape soit obligatoire, mais puisque cela ne prend que deux secondes…
) en vous rendant à l’adresse suivante :
https://www.facebook.com/add.php?api_key=APP_ID&pages
9. Sélectionnez dans la liste votre page Fan et validez.
10. Il n’y a plus qu’à tester votre script pour voir si tout fonctionne
Tips : Concernant la question que j’avais posé il y a quelques temps concernant l’impossibilité de partager les statut publier via le script (http://www.remiheens.fr/portfolio/ecrire-messages-automatique-twitter-facebook-php.html#comment-133), la solution consiste tout simplement à supprimer la valeur « action » dans le tableau $attachment de l’étape 7.
Avec ces modifications, la classe Facebook.php et tout ce qui s’y rapporte n’est donc plus nécessaire. Si le cœur vous en dit, après vous êtes assuré que tout fonctionne correctement, vous pouvez essayer de faire un brin de ménage dans les fichiers php.
En espérant que ça aidera ceux qui utilisent ce script