RootsLabs

More than a tool ! GitHub Google+ LinkedIn RSS

Notifier sur Facebook en PHP

Progi1984 - Commentaires (4)

Après avoir publié sur IRC, ou notifié un des vos utilisateurs par email, nous allons passer aux réseaux sociaux en commencant par Facebook. Celui-ci reste le réseau social par excellence.

Logo Facebook

Installation

Comme à notre habitude, on va utiliser Composer pour installer le SDK de Facebook :

"require": {
    "facebook/php-sdk" : "v3.2.3"
}

Créer une application Facebook

Avant toute chose, on va créer une application Facebook qui va nous permettre d’avoir des clés d’APIs.

Pour cela, il faut aller dans l’espace dédié aux développeurs Facebook : https://developers.facebook.com.
On choisit de créer une application avec un nom et un namespace associé :
facebook_app_create

Après cela, on arrive sur le tableau de bord de l’application où l’on peut récupérer l’identifiant de l’application et la clé secrète liée à l’application :
facebook_app_dashboard

Dans les paramètres avancés, on définit ensuite l’application comme une application de bureau (pour pouvoir lui définir des adresses en localhost dans les URLs de callback).
facebook_app_desktop

Pour finir, on crée une page canvas avec comme URL : http://locahost (non-secure) et https://locahost (secure).
facebook_app_platform

Voilà, votre application Facebook est prête à être utilisé pour récupérer le token d’accès.

Récupérer l’access token pour votre utilisateur

Le token d’accès est une chaîne de caractères qui permet de vous identifier avec votre application et qui est utilisé lors des appels d’API.
Pour cela, dans votre navigateur, vous allez rentrer cet URL en remplacant le CLIENT_ID par votre identifiant d’application :

https://www.facebook.com/dialog/oauth?client_id=CLIENT_ID&redirect_uri=http://localhost/fb.php&response_type=token&scope=publish_stream,manage_pages

Cet URL va vous rediriger vers votre page de connexion Facebook, si vous n’êtes pas connecté. Si vous êtes connecté, elle va vous demander l’autorisation de publier des statuts en votre nom et de pouvoir gérer vos pages. Après acceptation, elle va vous rediriger vers http://localhost/fb.php avec une URL contenant le token d’accès comme celle-ci :

http://localhost/fb.php#access_token=CAAUAnc…..lF2ZC2U1K&expires_in=0

Attention : le token d’accès est valable 60 jours.

Publier sur votre profil

Maintenant que l’on a l’identifiant de l’application, la clé secrète et le token d’accès, on peut coder.

On remplacera évidemment :

  • APP_ID par l’identifiant de l’application
  • APP_SECRET par la clé secrète
  • APP_ACCESS_TOKEN par le token d’accès
<?php

include_once '../../vendor/autoload.php';

$arrayConfig = array();
$arrayConfig['appId'] = 'APP_ID';
$arrayConfig['secret'] = 'APP_SECRET';

$oFacebook = new Facebook($arrayConfig);
$arrayParams = array(
    'access_token' => 'APP_ACCESS_TOKEN'
    'message' => 'Test Message #facebook',
    'link' => 'http://rootslabs.net/blog/',
    'picture' => '', /* URL d'une image */
    'name' => 'Test Name',
    'caption' => 'Test Caption',
    'description' => 'Test Description'
);
try {
    $oFacebook->api('/me/feed', 'POST', $arrayParams);
} catch(Exception $e) {
    echo $e->getMessage();
}

Avec ce code, vous pourrez poster un message sur votre profil. L’image suivante vous montrera le but de chaque variable.
facebook_post

Publier sur une page Facebook

Maintenant que l’on veut publier sur une page au nom d’une page, cela devient plus intéressant. Pour cela, il va falloir récupérer un token d’accès dédié à cette page.
Pour cela, on va récupérer auquel on a accès. Comme auparavant, on va remplacer la variable APP_ACCESS_TOKEN.

<?php

include_once '../../vendor/autoload.php';

$graph_url_pages = "https://graph.facebook.com/me/accounts?access_token=APP_ACCESS_TOKEN";
$pages = json_decode(file_get_contents($graph_url_pages));
print_r($pages);

On va récupérer un objet stdClass ayant une propriété data qui est un tableau. Celui-ci contient toutes les pages auxquels on a accès avec leur nom (name), leur catégorie (category), les permissions accordées à l’utilisateur courant (perms) et surtout deux choses importantes : un token d’accès liant la page, l’application et l’utilisateur courant (access_token) et l’ID de la page (id).
Grâce à ces deux dernières variables, on va pouvoir remplacer PAGE_ACCESS_TOKEN et PAGE_ID par leurs valeurs afin que le code puisse poster un message sur la page au nom de la page.

<?php

include_once '../../vendor/autoload.php';

$arrayConfig = array();
$arrayConfig['appId'] = 'APP_ID';
$arrayConfig['secret'] = 'APP_SECRET';

$oFacebook = new Facebook($arrayConfig);$arrayParams = array(
    "access_token" => 'PAGE_ACCESS_TOKEN',
    "message" => "Test Message #facebook",
    "link" => "http://rootslabs.net/blog/",
    "picture" => "",
    "name" => "Test Name",
    "caption" => "Test Caption",
    "description" => "Test Description"
);

try {
   $oFacebook->api('/PAGE_ID/feed', 'POST', $arrayParams);
} catch(Exception $e) {
    echo $e->getMessage();
}

Conclusion

Pour conclure, notifier sur Facebook est intéressant car Facebook reste avec Twitter l’un des réseaux sociaux les plus importants, les plus visités et les plus vus au monde. Donc Facebook reste THE PLACE TO BE. Alors maintenant à vous de permettre à votre application de notifier sur Facebook.

Commentaires

1. RootsLabs » Publier sur Twitter en PHP, le 26 mai 2014 à 10:30

[…] avoir publié sur Facebook, envoyé un message sur IRC ou XMPP et même envoyé un e-mail, nous allons voir comment envoyer un […]

2. RootsLabs » Publier à distance un article WordPress en PHP, le 23 juin 2014 à 10:31

[…] Facebook et Twitter, et si on revenait à quelque chose de plus local : WordPress. Aujourd’hui, on va […]

3. donchaki, le 19 juillet 2016 à 15:36

Bonjour,

J’ai crée une app sur fb via un autre site serveur, j’ai pu publié mon app sur mon compte fb,,,et avec mon autre compte fb j’ai cliqué et accepter et j’observais le acces token de mon 2éme compte lors de l’installation de l’app.

Ma question est comment et ou trouver l’acces token des gens qui font la souscription a mon app d’une facon automatisé,,,j’ai cherché longtemps .

Merci der faire suite

4. Progi1984, le 21 juillet 2016 à 15:12

@donchaki : Je ne comprends pas. Pourriez vous être plus explicite ? May be in english, if you prefer.

Ajouter un commentaire

Commentaire :