Application facebook : Publiez sur un mur [php - js]

Publié le 14 février 2011 par Rkueny

Comment publier sur le mur d’un utilisateur Facebook ?

Je vois souvent cette question passer et vu qu’il y a plusieurs façons, je vous fait un petit billet pour y répondre. On va y voir plusieurs choses :

  • Les principes de base
  • L’architecture de base
  • La publication en php
  • La publication en js
  • avec confirmation
  • sans confirmation

Les principes de « base »

Depuis un petit moment déjà maintenant, pour pouvoir publier sur le mur d’un utilisateur de votre application, vous devez lui en demander le droit. Ainsi, sachez que l’accès au mur de l’utilisateur doit être demandé et accepté par la personne utilisant votre application.

Ici l’autorisation qui nous intéresse est la suivante :

publish_stream : Enables your application to post content, comments, and likes to a user’s stream and to the streams of the user’s friends. With this permission, you can publish content to a user’s feed at any time, without requiring offline_access. However, please note that Facebook recommends a user-initiated sharing model.

Source : Developers Facebook

Ainsi, avez cette permission vous pourrez publier/récupérer un post, un commentaire ou les « j’aime » du mur.

Entrons désormais un peu plus dans le vif du sujet.

L’architecture de « base »

Si vous revenez un peu sur mes anciens billets vous avez à peu près tout. Mais vu que je suis gentil, je vous mets ici le fichier de « base ». C’est la manière que j’utilise et qui marche bien. Attention, en copiant collant cela risque bien de ne pas marcher, ici mon but est bien ciblé sur les fonctions de publications de contenu (php/js). Si vous avez des questions techniques à la fin de cet article, n’hésitez pas à laisser un commentaire.

Ainsi :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:og="http://opengraphprotocol.org/schema/"
xmlns:fb="http://www.facebook.com/2008/fbml">
 
<head>
</head>
<body>
 
 <div id="fb-root"></div>
 <script type="text/javascript">
 
 windowfbAsyncInit = function() {
 FBinit({appId: 'xxxxxxxxx',
 status: true,
 cookie: true,
 xfbml: true
 });
 FBCanvassetAutoResize();
};
 
(function() {
 var e = documentcreateElement('script');
 etype = 'text/javascript';
 esrc = documentlocationprotocol +
 '//connect.facebook.net/fr_FR/all.js';
 easync = true;
 documentgetElementById('fb-root')appendChild(e);
}());
 
</script>
</body>
</html>

Ici tout est en place pour que cela marche. Pour la récupération de l’uid en php, la connection (php/js) référez-vous à mes anciens billets sur le sujet.

La ligne 18 « FB.Canvas.setAutoResize(); » permet d’éviter les scrollbars dans le cadre de la page Facebook.

La publication en php

Vous voulez publier sur le mur de votre utilisateur ? Quelque chose dans le genre : Bidule est en train de jouer à XXXX ? Facile !!! Il vous suffit d’utiliser l’appel à l’API graph de cette façon :

1
2
3
4
5
6
7
8
9
10
11
12
$facebook->api( '/me/feed',
'post',
array(
'message'        =>;     'a commencé à utiliser XXXXXX',
'picture'        =>    '',
'link'          =>     URL_APP,
'name'          =>     'XXXXXX',
'description'    =>    'Viens jouer avec lui ...... 
test'
, 'actions'       =>    json_encode(array('name' =&gt; 'Jouez à votre tour', 'link' =&gt; URL_APP)), 'cb'          =>     '' ) );

$facebook étant l’instance de votre classe Facebook.

Décryptons un peu tout ça :
On fait appel à l’API avec 3 arguments. Le premier indique le point d’entrée, ici le mur (feed) de l’utilisateur connecté (me). Le deuxième indique la façon (post ou get) et le troisième ce que l’ont veut poster. On va s’y attarder avec cette simple image :

1 : Il s’agit du message que vous avez défini.
2 : Il s’agit de l’image (picture) que vous avez défini (url). Ici, l’ayant laissée vide rien n’apparait
3 : Il s’agit du lien avec le 4 : qui est le texte du lien (ici XXXXX)
5 : Il s’agit de la description de votre publication. Nous verrons un peu plus loin comment y insérer des liens (en effet, la balise <a href> ne fonctionne pas.
6 : Il s’agit de l’action possible (actions). Avez le lien et le texte du lien.

Pas compliqué lorsque c’est écrit non ?

Cependant, attention. Avec cette fonction vous pouvez publier à l’insu de l’utilisateur. Voici 3 raisons de ne pas le faire :

  • c’est interdit par Facebook
  • les utilisateurs n’aiment pas beaucoup ça
  • et enfin, il est possible que cela ne fonctionne plus au bout de x envoi. Votre application est limitée par Facebook. Si vous ne gérez pas cela avec une exception c’est toute votre application qui plante

Du coup, ça ne sert à rien en php vous me direz ? Bien sur que si ! Cependant cela doit se déclencher après une action de l’utilisateur validant cela. Vous pouvez par exemple mettre dans les options de votre application, une case à cocher, décochée par défaut, disant de publier sur le mur après chaque partie par exemple.

Nous verrons ensuite comment publier en javascript et comment ajouter des liens dans la description du contenu (le n°5). A bientôt

PS : n’hésitez pas à poser vos questions dans les commentaies