PHP: LightOpenID, как получить данные учетной записи от поставщика?

У меня проблемы с небольшой OpenID-библиотекой под названием LightOpenID . Я могу пройти аутентификацию почти у всех поставщиков, но я не знаю, как получить данные от поставщика. Я получаю только Array (), eaven с print_r ().

    Вам нужно вызвать getAttributes() после $openid->validate() не раньше.

    Запомнить:

    Обратите внимание, что это не гарантирует, что какой-либо из необходимых / необязательных параметров будет присутствовать

    Вот как я его использую. Это файл openid.php в папке lightopenid. В классе выполняются следующие дополнительные функции –

     class LightOpenID { public $returnUrl , $required = array() , $optional = array() , $verify_peer = null , $capath = null , $cainfo = null; // these are the variables which store the data about the user... public function ret_fname() { return $this->data['openid_ext1_value_namePerson_first']; } public function ret_lname() { return $this->data['openid_ext1_value_namePerson_last']; } public function ret_email() { return $this->data['openid_ext1_value_contact_email']; } public function ret_lang() { return $this->data['openid_ext1_value_pref_language']; } } 

    Теперь сделайте свой пример файла login.php, который вызывается, когда вы хотите пройти аутентификацию. Может быть несколько копий этого файла для разных доменов аутентификации и т. Д.

     <?php # Logging in with Google accounts requires setting special identity, so this example shows how to do it. session_start(); require 'lightopenid/openid.php'; include_once('config.php'); // initial setting file try { $openid = new LightOpenID; // akshat - declared an object of class lightopenid.. this is listed in openid.php if(!$openid->mode) { if(isset($_GET['login'])) { $openid->identity = 'https://www.google.com/accounts/o8/site-xrds?hd=YourDomain.in'; //this can be changed as you know... $openid->required = array('namePerson/friendly', 'contact/email' , 'contact/country/home', 'namePerson/first', 'pref/language', 'namePerson/last'); // akshat - line added by me from after reading from the net.... header('Location: ' . $openid->authUrl()); } ?> <script type="text/javascript" src="js/jquery-1.4.2.min.js" language="javascript"></script> <script type="text/javascript"> $(document).ready(function() { document.form.submit(); }); </script> <form name="form" action="?login" method="post"> </form> <?php } elseif($openid->mode == 'cancel') { echo 'User has canceled authentication for Your Domain !'; } else { // FETCH USER INFO HERE $fname = $openid->ret_fname(); // fetching user first name... $lname = $openid->ret_lname(); // fetching user last name... $email = $openid->ret_email(); // fetching user email... $lang = $openid->ret_lang(); // fetching user language... session_start(); // use it as required. I set them in session ! $_SESSION['admin']['emailID'] = $email; //put email id in session. $_SESSION['admin']['fname'] = $fname; //put first name also in session. $_SESSION['admin']['lname'] = $lname; //put last name also in session. $rurl = $_SESSION['redirect']; // you can ignore this. Go to your own page now... header("Location:$rurl"); // Go back to the calling application ! } } catch(ErrorException $e) { echo $e->getMessage(); } ?>