le 05/03/2010 à 13:45
comment récupérer les info d'openid
bonjour,
j'aimerai savoir comment on peut récupérer les infos d'un compte openid aprés authentification ?
en fait mon problème est que
pendant l'authentification sur toutes les info j'ai "Status : Non demandé"
et donc $data['email'] est vide
merci d'avance
j'aimerai savoir comment on peut récupérer les infos d'un compte openid aprés authentification ?
openid.php
<?php
if (!isset($_POST['submit'])) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Entrez votre OpenID: <br/>
<input type="text" name="id" size="30" />
<br />
<input type="submit" name="submit" value="Log In" />
</form>
</body>
</html>
<?php
} else {
// vérifie les valeurs du formulaire
if (trim($_POST['id'] == '')) {
die("ERROR: Entrez un OpenID valide svp.");
}
// fichiers inclus
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
// démarrage de la session (requis pour YADIS)
session_start();
// crée une zone de stockage pour les données OpenID
$store = new Auth_OpenID_FileStore('./oid_store');
// crée un consommateur OpenID
$consumer = new Auth_OpenID_Consumer($store);
// commence le process d'authentification
// crée une requête d'authentification pour le fournisseur OpenID
$auth = $consumer->begin($_POST['id']);
if (!$auth) {
die("ERROR: Entrez un OpenID valide svp.");
}
// redirige vers le fournisseur OpenID pour l'authentification
$url = $auth->redirectURL('http://192.168.1.21/essai_tech/openid/', 'http://192.168.1.21/essai_tech/openid/oid_return.php');
/* $url = $auth->redirectURL('http://localhost/essai_tech/openid/', 'http://localhost/essai_tech/openid/oid_return.php'); */
header('Location: ' . $url);
}
?>
iod_return.php
<?php
// Fichiers inclus
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
require_once "Auth/OpenID/SReg.php";
// démarre la session (requis pour YADIS)
session_start();
// crée une zone de stockage pour les données OpenID
$store = new Auth_OpenID_FileStore('./oid_store');
// crée un consommateur OpenID
// Lit la réponse du fournisseur OpenID
$consumer = new Auth_OpenID_Consumer($store);
$response = $consumer->complete('http://192.168.1.21/essai_tech/openid/oid_return.php');
// renseigne les valeurs en fonction de celles de l'authentification
if ($response->status == Auth_OpenID_SUCCESS)
{
$_SESSION['OPENID_AUTH'] = true;
$sreg = new Auth_OpenID_SRegResponse();
$obj = $sreg->fromSuccessResponse($response);
$data = $obj->contents();
$_SESSION['var_openid']=$data;
}
else
{
$_SESSION['OPENID_AUTH'] = false;
}
// redirige vers la zone restreinte
header('Location: restricted.php');
?>
restricted.php
<?php
session_start ();
// Vérifie le statue de l'authentification
if (!isset($_SESSION['OPENID_AUTH']) || $_SESSION['OPENID_AUTH'] !== true) {
die ('Vous n\'avez pas le droit d\'accéder a cette page! Loggez-vous svp.<br><a href="openid.php">retour</a>');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
</head>
<body>
<h2>Page restreinte</h2>
<p>Vous voyez cette page seulement car l'authentification OpenID a fonctionnée.</p>
<p>
<?php
echo 'var_openid = '.$_SESSION['var_openid']['dob'].'<br>';
if (isset($data['email']))
{
echo 'email = '.$data['email'];
}
else
{
echo 'pas d\'email';
}
?>
</p>
<p>
<a href="openid.php">retour</a><br>
<a href="http://www.openidfrance.fr/logout.html">Déconnexion du site openID</a><br>
<a href="logout.php">Déconnexion de la session</a><br>
</p>
</body>
</html>
en fait mon problème est que
pendant l'authentification sur toutes les info j'ai "Status : Non demandé"
et donc $data['email'] est vide
merci d'avance