Suite à l’inauguration du site de mon agence web à Mâcon (clementguillemain.fr), ce blog va être prochainement supprimé, je vous invite à sauvegarder les articles qui vous intéressent. Un nouveau blog, plus dans l’air du temps et très accès sur Symfony 2 verra également le jour. Suivez mon profil twitter @Sybio01 pour des news !

Symfony 2 est dans la place !

9 mars 2011 par Sybio | Catégorie: Personnel | 2 commentaires

Après une longue période d’inactivité sur mon blog, me revoilà parmi vous pour écrire un court article sur un évènement auquel je ne pouvais pas manquer: la sortie de Symfony 2 bon sang !

Symfony2

Le nouveau framework a pour le coup un nouveau logo et un nouveau site au design super professionnel qui possède son adresse .com: http://symfony.com/.

Pour ce que j’ai lu de la doc’ (4 chapitres pour le moment), je la trouve beaucoup plus simple, plus clair, et elle fait le tour d’horizon du framework, contrairement à Jobeet et les 3 autres livres de Symfo 1 où vous devez farfouiller ici et là :p

Au passage, si vous maîtrisez Symfony 1, apprendre le nouveau est vraiment un jeu d’enfant.

Bref, tout ça pour vous dire que je suis en cours de migration vers Symfony 2, et j’espère que vous allez faire de même ^^

Pendant que j’y suis, voila un résumé de Symfony Live 2011 par LaFermeDuWeb, et l’évènement Web organisé par Novaway, on vous attend avec impatience !

Voila, sinon c’est temps-ci je dev’ du Jquery Mobile qui est toujours en Alpha Test, peut-être que je ferais des tutoriels dessus par la suite ;)

Tutoriel: Oauth et l’API Facebook

21 février 2011 par Sybio | Catégorie: Réseaux Sociaux | 5 commentaires

Avant de lire ce tutoriel, vous devez comprendre le fonctionnement d’Oauth que j’explique sur cette page. Revenez ensuite sur ce tutoriel et suivez les étapes pour accéder à l’API de Facebook via Oauth.

API Facebook

1 – Lien de l’API:

http://developers.facebook.com/

2 – Enregistrer votre application:

Rendez-vous sur ce lien: http://www.facebook.com/developers/createapp.php

Facebook va vérifier votre compte en envoyant un sms au numéro de téléphone que vous aurez entré.

Pour l’enregistrement, vous devez entrer le nom de votre application, l’url de votre site web ainsi que l’url de redirection (voir 4).  Gardez vos clefs au chaud.

3 – Mise en place du lien pour vos utilisateurs:

Lorsque l’un d’eux va cliquer dessus, il sera invité à accepter de partager ses infos sur votre application, puis sera redirigé sur la page spécifiée lors de l’inscription de votre application, URL à mettre également dans la variable $urlRedirection:

<a href="https://graph.facebook.com/oauth/authorize?client_id=<?php echo $publicKey; ?>&redirect_uri=<?php echo $urlRedirection; ?>">Facebook</a>

4 – Script pour l’url de redirection:

Votre utilisateur a cliqué sur votre lien, il a accepté de partager ses infos, le voila maintenant redirigé sur le script se trouvant à votre URL de redirection. L’API vous renvoie une variable $_GET['code'] qui va vous permettre de récupérer les infos de l’utilisateur comme ci-après:

<?php
// Le réseau nous renvoie un code pour accéder au token de l'utilisateur
$code = $_GET['code'];

// On ouvre une page de facebook qui retourne un json, celui-ci contient le token de l'utilisateur
$accessToken = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id='.$publicKey.'&client_secret='.$secretKey.'&redirect_uri='.$urlRedirection.'&code='.$code);
// On récupère le token (via un regex par exemple)
$accessToken = preg_replace('#^access_token=(.+)$#', '$1', $accessToken);

// Il faut également récupérer l'id de l'utilisateur pour pouvoir avoir plus d'infos sur ce dernier:

// Pour cela on ouvre sa page d'informations et on récupère son id pendant qu'il est connecté:
$infos = json_decode(file_get_contents("https://graph.facebook.com/me?oauth_token=".$accessToken), true);

$fbId = $infos["id"];
$accountUrl = $infos["link"];
// Le tour est joué, vous pouvez à présent récupérer les données que vous voulez

// Vous pouvez aussi sauvegarder le token et l'id de l'utilisateur dans une table
// pour pouvoir récupérer des infos sur ce dernier plus tard
// (à condition d'avoir ajouté une autorisation, voir plus loin...)
// enfin, on redirige notre utilisateur sur notre page d'accueil

header("Location: index.html");
?>

5 – Les informations de l’utilisateur:

Dans Facebook, chaque membre peut poster des nouveaux statuts, des liens, ces derniers possèdent des informations comme leur adresse, curriculum vitae …

Pour savoir quelles informations vous pouvez récupérer, rendez-vous sur l’API à cette page: http://developers.facebook.com/docs/reference/api/

Vous voyez ainsi toutes les tables de Facebook  (comme l’image ci-après):

JSon des tables de Facebook

En cliquant sur l’une d’elle, vous verrez toute l’arborescence du json représentant cette table. Par la suite, vous pourrez lire le json d’un utilisateur et donc récupérer ses infos.

Tables de FacebookToujours sur la même page se trouve également une liste de toutes les tables de Facebook dans le panneau à gauche (voir l’image ci-contre). En cliquant sur l’une d’elle, vous accédez à une page d’information sur la table.

Par défaut, toutes les tables de Facebook ne sont pas accessibles ! Par exemple, en cliquant sur la table album, on peut voir qu’il faut la permission publish_stream.

Album nécessite la permission publish_stream

Il va falloir demander à l’utilisateur si vous pouvez utiliser telle table, en rajoutant des permissions au lien vu en partie 3).

Si on veut récupérer les albums des utilisateurs, il va donc falloir configurer le lien de la partie 3) comme suivant:

<a href="https://graph.facebook.com/oauth/authorize?client_id=<?php echo $publicKey; ?>&redirect_uri=<?php echo $urlRedirection; ?>&scope=publish_stream">Facebook</a>

« scope » est donc le paramètre qui contient les différentes autorisations. Je vous conseille de mettre l’autorisation offline_access pour pouvoir récupérer les informations des utilisateurs n’importe quand, même s’ils sont déconnectés de Facebook (en ayant au préalable stocké leur token et id en bdd par exemple).

<a href="https://graph.facebook.com/oauth/authorize?client_id=<?php echo $publicKey; ?>&redirect_uri=<?php echo $urlRedirection; ?>&scope=offline_access,publish_stream">Facebook</a>

Maintenant, nous allons voir comment récupérer les derniers albums d’un utilisateur qui a accepté notre application:

<?php
// On accède au json des albums (photos) de l'utilisateur
$albums = file_get_contents('https://graph.facebook.com/'.$fbId.'/albums?access_token='.$accessToken);
$albums = json_decode($albums, true);

// Pour chaque album
foreach ($albums["data"] as $singleAlbum)
{
  $idAlbum = $singleAlbum["id"];
  $nomAlbum = $singleAlbum["name"];
  $lienVersAlbum = $singleAlbum["link"];
  $nomAuteur = $singleAlbum["from"]["name"];
  $idAuteur = $singleAlbum["from"]["id"];
  // etc...
  // On sauvegarde / traite ces infos
}
?>

Je vous invite à lire toute la page qui vous apprendra également comment poster des messages sur le profil d’un utilisateur et bien plus !

Sachez que vous pouvez faire 500 requêtes au maximum vers Facebook pour récupérer des infos par heure.

Tutoriel: utiliser Oauth, le protocole utilisé par les APIs de facebook, twitter, foursquare…

4 février 2011 par Sybio | Catégorie: Réseaux Sociaux | 0 commentaire

Fonctionnement d'OauthLa plupart des APIs de réseaux sociaux utilisent à présent le protocole open-source Oauth (http://oauth.net/).
C’est le cas notamment pour Facebook, Foursquare et Twitter !

Ce tutoriel est une introduction à Oauth, qui vous permettra alors de faire des applications pour ces réseaux sociaux, permettre la connexion sur votre site via un réseau, ainsi que récupérer des informations pour faire des veilles, des lecteurs, de l’espionnage (xD) etc…

Fonctionnement d’Oauth:

1 – Tout d’abord, vous devez enregistrer votre application sur l’api du site désiré. Ce dernier vous donnera alors une clef publique, et une clef secrete pour votre application. (à conserver précieusement). De plus, vous devez spécifier l’URL de votre site, ainsi qu’une URL de redirection, dont vous allez comprendre l’utilité un peu plus loin.

2 – Les utilisateurs cliquent sur un lien (facebook par exemple) qui mène au réseau voulu, auquel vous avez spécifié en paramètre GET la clef publique de votre application. Ceux-ci se voient afficher une page qui leur demandent s’ils acceptent de partager leur infos avec votre application. S’ils acceptent, ces derniers sont redirigés vers l’URL de redirection que vous avez spécifié.

Cette dernière doit contenir un script qui récupère le token de l’utilisateur (unique pour votre application et pour chaque compte d’un réseau social).

3 – On récupère le token de l’utilisateur avec notre script ainsi que l’id de son compte sur le réseau, et on les sauvegarde par exemple dans notre bdd.

Le token peut être apparenté à un identifiant unique reliant votre site et le compte de quelqu’un sur un réseau social !

Une fois le token récupéré:

Vous pouvez alors récupérer quand vous voulez des infos sur un compte en lisant un fichier de type json à l’url de l’API du réseau social (en y ajoutant votre clef publique, privée, le token et l’id de l’utilisateur).

Mes explications peuvent paraitre encore floues, mais vous allez voir qu’en fait c’est tout simple avec les exemples qui vont suivre. Sachez également que les variables GET à spécifier n’ont pas le même nom selon les différents réseaux, ce qui ne change rien au fonctionnement d’Oauth ;)

Oauth pour Foursquare:

Utilisez l’API de Foursquare dans cet article.

Oauth pour Facebook:

Utilisez l’API de Facebook dans cet article.

Oauth pour Twitter:

A venir prochainement.

Oauth et Twitter

Tutoriel: Oauth et l’API de Foursquare

4 février 2011 par Sybio | Catégorie: Réseaux Sociaux | 1 commentaire

Avant de lire ce tutoriel, vous devez comprendre le fonctionnement d’Oauth que j’explique sur cette page. Revenez ensuite sur ce tutoriel et suivez les étapes pour accéder à l’API de Foursquare via Oauth.

Foursquare

1 – Lien de l’API:

http://developer.foursquare.com/

2 – Enregistrer votre application:

Rendez-vous sur ce lien: https://foursquare.com/oauth/

Vous devez entrer le nom de votre application, l’url de votre site web ainsi que l’url de redirection (voir 4).  Gardez vos clefs au chaud.

3 – Mise en place du lien pour vos utilisateurs:

Lorsque l’un d’eux va cliquer dessus, il sera invité à accepter de partager ses infos sur votre application, puis sera redirigé sur la page spécifiée lors de l’inscription de votre application, URL à mettre également dans la variable $urlRedirection:

<a href="https://foursquare.com/oauth2/authenticate?client_id=<?php echo $publicKey; ?>&response_type=code&redirect_uri=<?php echo $urlRedirection; ?>">Foursquare</a>

4 – Script pour l’url de redirection:

Votre utilisateur a cliqué sur votre lien, il a accepté de partager ses infos, le voila maintenant redirigé sur votre URL de redirection. L’API vous renvoie une variable $_GET['code'] qui va vous permettre de récupérer les infos de l’utilisateur comme ci-après:

<?php
// Le réseau nous renvoie un code pour accéder au token de l'utilisateur
$code = $_GET['code'];

// On ouvre une page de foursquare qui retourne un json, celui-ci contient le token de l'utilisateur
$accessToken = file_get_contents('https://foursquare.com/oauth2/access_token?client_id='.$publicKey.'&client_secret='.$secretKey.'&grant_type=authorization_code&redirect_uri='.$urlRedirection.'&code='.$code);
$accessToken = json_decode($accessToken, true);
$accessToken = $accessToken["access_token"];

// Il faut également récupérer l'id de l'utilisateur pour pouvoir avoir plus d'infos sur ce dernier:

// Pour cela on ouvre sa page d'informations et on récupère son id:
$infos = json_decode(file_get_contents('https://api.foursquare.com/v2/users/self?oauth_token='.$accessToken), true);
$fsId = $infos["response"]["user"]["id"];

// Le tour est joué, vous pouvez à présent récupérer les données que vous voulez

// Vous pouvez aussi sauvegarder le token et l'id de l'utilisateur dans une table
// pour pouvoir récupérer des infos sur ce dernier plus tard
// enfin, on redirige notre utilisateur sur notre page d'accueil

header("Location: index.html");
?>

5 – Les informations de l’utilisateur:

Dans Foursquare, chaque membre peut poster des tips, checkins, ou encore obtenir des badges …

Pour savoir quelles informations vous pouvez récupérer, rendez-vous sur leur API qui est vraiment bien faite: http://developer.foursquare.com/docs/index_docs.html

Tables de Foursquare - Endpoints

Bouton Try It OutVous voyez ainsi toutes les tables de Foursquare. En cliquant sur l’une d’elle, vous accédez à une page d’information. Cliquez sur le bouton « Try it out », vous verrez ainsi le json que celle-ci vous retourne. Par exemple, cliquez sur les tips d’un user, puis le bouton « Try it Out »:

Vous pouvez voir toute l’arborescence du json représentant les tips d’un utilisateur (dans la démo de l’API, c’est votre propre compte, alias « self »).

API Explorer de Foursquare

Maintenant, si on veut récupérer les tips d’un utilisateur enregistré, il suffit d’ouvrir le json des tips pour cet utilisateur comme ceci, en spécifiant son id et son token:

<?php
// On accède au json des tips de l'utisateur
$tips = file_get_contents('https://api.foursquare.com/v2/users/'.$fsId.'/tips?oauth_token='.$accessToken);
$tips = json_decode($tips, true);

// Pour chaque tips
foreach ($tips["response"]["tips"]["items"] as $singleTips)
{
  $idDuTips = $singleTips["id"];
  $textDuTips = $singleTips["text"];
  $nomDuLieuDuTips = $singleTips["venue"]["name"];

  // Pour chaque catégorie du lieu du tips
  foreach ($singleTips["venue"]["categories"] as $categoryVenue)
  {
    $nomDeLaCategorie = $categoryVenue["name"];
    //...
  }
  // etc...
}
?>

Et voila, c’est valable pour toutes les tables de Foursquare, vous n’avez pas de restriction pour récupérer des informations contrairement à facebook où vous devez spécifier des autorisations.

Sachez également que vous pouvez faire 500 requêtes au maximum vers Foursquare pour récupérer des infos par heure.