Skip to content

Instantly share code, notes, and snippets.

@dandelionmood
Created March 9, 2012 15:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dandelionmood/2006930 to your computer and use it in GitHub Desktop.
Save dandelionmood/2006930 to your computer and use it in GitHub Desktop.
Connexion OAuth à Twitter
<?php
// Inclusions idem que l'exemple précédent.
// L'API jetera une exception en cas de problème, cela sera notamment le cas
// si l'internaute a choisi de refuser de partager ses informations.
try {
// Comme la dernière fois, on instancie l'objet de connexion avec les
// informations de connexion.
$options = array('consumer_key' => TWITTER_CONSUMER_KEY, 'consumer_secret' => TWITTER_CONSUMER_SECRET);
OAuthStore::instance("2Leg", $options);
// Nous allons maintenant chercher à obtenir un acces_token, le sésame
// pour accéder à toutes les informations de l'internaute.
$request = new OAuthRequester('https://api.twitter.com/oauth/access_token', "POST", $_GET);
$result = $request->doRequest(0);
parse_str($result['body'], $p);
// L'API de Twitter est un peu spéciale dans le sens où elle retourne un
// certain nombre d'informations en plus du access_token — il ne s'agit
// pas du fonctionnement standard, mais une spécificité bien pratique.
echo "Succès ! Quelques informations de l'internaute : ",
$p['user_id'], $p['screen_name'], $p['access_token'];
}
catch( OAuthException2 $e ) {
// En cas de problème, on redirige vers une page d'erreur.
header(
"Location: erreur_de_connexion.php?"
http_build_query(array(
'message' => "Vous n'avez pas autorisé l'application à accéder à vos
données, la procédure ne peut pas se poursuivre."
))
);
}
<?php
// Incluez ces deux classes pour utiliser la librairie OAuth-PHP
include_once "../../library/OAuthStore.php";
include_once "../../library/OAuthRequester.php";
// Identifiants obtenus sur dev.twitter.com, à mettre dans un fichier de conf
// centralisé en amont.
define('TWITTER_CONSUMER_KEY', 'votre-clé-d-utilisateur');
define('TWITTER_CONSUMER_SECRET', 'votre-secret-d-utilisateur');
// Instanciation de la librairie en mode two-legged avec les identifiants
// que vous avez renseigné.
$options = array(
'consumer_key' => TWITTER_CONSUMER_KEY,
'consumer_secret' => TWITTER_CONSUMER_SECRET
);
OAuthStore::instance("2Leg", $options);
// Pour accéder à la page demandant à l'internaute de partager ses informations
// avec nous, il nous faut tout d'abord demander un «access_token» à
// Twitter.
// On en profite pour lui indiquer immédiatement vers quelle URL on va attendre
// son retour après une validation ou un refus par l'internaute.
$request = new OAuthRequester('https://api.twitter.com/oauth/request_token', "POST", array(
'oauth_callback' => 'http://monsite.com/callback_twitter.php'
));
// On effectue un CURL pour récupérer cette donnée ...
$result = $request->doRequest(0);
// ... On va récupérer l'ensemble des paramètres dans une variable $params
// que l'on va passer en GET sur le formulaire d'«authorization» (sic).
parse_str($result['body'], $params);
// Et zou ! On renvoie l'internaute vers le formulaire chez twitter.
$url_redirection = 'https://api.twitter.com/oauth/authorize?'
.http_build_query($params);
header( "Location: $url_redirection" );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment