Created
March 9, 2012 15:15
-
-
Save dandelionmood/2006930 to your computer and use it in GitHub Desktop.
Connexion OAuth à Twitter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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." | |
)) | |
); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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