Skip to content

Instantly share code, notes, and snippets.

@dandelionmood
Created April 20, 2012 08:13
Show Gist options
  • Save dandelionmood/2427064 to your computer and use it in GitHub Desktop.
Save dandelionmood/2427064 to your computer and use it in GitHub Desktop.
Connexion OAuth à Facebook
<?php
// Ce coup-ci, on va avoir besoin de la librairie OAuth
include_once "../../library/OAuthStore.php";
include_once "../../library/OAuthRequester.php";
$error = $_GET['error'];
$code = $_GET['code'];
// Il faut reprendre l'URL exacte avec laquelle cette page a été appelée.
$redirect_uri = 'http://monsite.com/callback_facebook.php';
// Si une erreur s'est produite (typiquement parce que l'internaute a décliné
// l'invitation de Facebook) on va gérer le cas de figure plus bas.
if( is_null($error) ) {
$params = array(
'client_id' => __FACEBOOK_APP_ID__,
'client_secret' => __FACEBOOK_APP_SECRET__,
// C'est ce code reçu qui va nous permettre d'aller plus loin.
'code' => $code,
'redirect_uri' => $redirect_uri
);
// Connexion au Auth Store.
$options = array('consumer_key' => __FACEBOOK_APP_ID__, 'consumer_secret' => __FACEBOOK_APP_SECRET__);
OAuthStore::instance("2Leg", $options);
// On gère un problème au cas où l'application n'est plus autorisée.
try {
// On récupère notre access token, enfin !
$request = new OAuthRequester("https://graph.facebook.com/oauth/access_token", "GET", $params);
$result = $request->doRequest(0);
parse_str($result['body'], $p);
// À ce stade, vous disposez dans $p du access_token permettant d'interroger
// facebook pour récupérer les informations de l'utilisateur.
}
catch( OAuthException2 $e ) {
echo "L'application n'est plus autorisée !";
}
} else {
echo "Une erreur s'est produite.";
}
<?php
// Pas besoin d'inclusions particulières, il suffit pour Facebook de rediriger
// l'internaute vers une page de formulaire (il n'y a pas de notion
// de request_token).
// La page à appeler en callback
$redirect_uri = 'http://monsite.com/callback_facebook.php';
$params = array(
'client_id' => __FACEBOOK_APP_ID__,
// Pour récupérer le mail de l'internaute dans la foulée de la connexion
// on va immédiatement demander à accéder à cette donnée dans le
// formulaire de connexion.
'scope' => 'email',
// On redirige sur cette URL à la fin de la connexion.
'redirect_uri' => $redirect_uri,
'display' => 'popup' // on va l'afficher dans un popup, sinon «page» ou «touch»
);
$url_redirection = 'https://www.facebook.com/dialog/oauth?'
.http_build_query($params);
// Finalement, on redirige l'internaute vers le formulaire chez Facebook.
header( "Location: $url_redirection" );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment