Tengo problemas con una pequeña biblioteca OpenID llamada LightOpenID . Puedo autenticar a casi todos los proveedores, pero no sé cómo obtener los datos del proveedor. Solo obtengo Array(), eaven con print_r().PHP: LightOpenID, ¿cómo recuperar datos de cuenta del proveedor?
Respuesta
Tiene que llamar al getAttributes()
después de$openid->validate()
no antes.
Recuerde:
Tenga en cuenta que esto no garantiza que cualquiera de los parámetros requeridos/opcionales estarán presentes
He hecho esto ahora: http://pastebin.com/ULsLvhxp Entonces para mostrar el correo electrónico, ¿uso $ foo ['email']? – Pwntus
Será '$ foo ['contact/email']' - según los documentos, los atributos se asignan al formato AX. – Pete
Además, '$ openid-> required = array ('contact/email');' debe llamarse ** antes ** '$ openid-> validate()' – Pete
Ésta es la forma en que lo uso. Este es el archivo openid.php en la carpeta lightopenid. En la clase de realizar las siguientes funciones adicionales: -
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']; }
}
Ahora haga su ejemplo login.php archivo que se llama cuando se desea autenticar. Puede haber varias copias de este archivo para diferentes dominios de autenticación etc.
<?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();
}
?>
- 1. ¿Cómo desactivo una cuenta con el proveedor de membresía ASP.NET?
- 2. Seguridad PHP: recuperar el archivo PHP del servidor, sin procesar
- 3. CodeIgniter/PHP/MySQL: Recuperar datos con JOIN
- 4. Obtener contactos de Google utilizando LightOpenID?
- 5. LightOpenID validate() falla en Google Apps
- 6. Cómo agregar la cuenta SIP del sistema
- 7. Cómo recuperar anotaciones de datos del código? (programáticamente)
- 8. Recuperar datos booleanos del atributo de datos en jquery
- 9. Crear un proveedor de OpenID en PHP
- 10. recuperar datos de linkedgeodata.org
- 11. Recuperar frente a FetchMany en el proveedor de NHibernate Linq
- 12. MySQL: Recuperar valores únicos y cuenta para cada
- 13. Cómo recuperar datos XML de Javascript
- 14. ¿Cómo recuperar datos de Excel usando linq?
- 15. Cómo recuperar archivos del índice
- 16. Cómo publicar datos en PHP usando file_get_contents?
- 17. Recuperar datos de densidad de población
- 18. Cómo evitar "Error interno del proveedor de datos de .NET Framework 1025."?
- 19. ¿Cómo puedo recuperar los datos del mes específico de la base de datos SQLite?
- 20. PHP - cuenta valores de matriz específicos
- 21. Configurar un proveedor de PHP OAuth
- 22. Cómo mostrar la cuenta regresiva usando PHP y MySQL
- 23. Recuperar datos de XML python
- 24. Cómo recuperar JSON matriz de datos de ExtJS tienda
- 25. Recuperar información ID3 del archivo m4a en PHP
- 26. CakePHP cómo recuperar datos HABTM con condiciones?
- 27. Cómo saber el nombre de la base de datos subyacente del proveedor de hibernación
- 28. ¿Cómo recuperar la cadena de conexión del modelo de entidad?
- 29. ¿Cómo usar IMAP en PHP para recuperar el contenido del cuerpo del correo?
- 30. Cómo restringir los datos del proveedor de contenido a través de las aplicaciones
Necesitamos más información ... ¿qué nos dice exactamente lo que ha intentado (como en, copia y pega el código) y luego cuéntanos los resultados (como en, copiar y pegar). – Narcissus
Disculpe, aquí está el código: http://pastebin.com/kS9S4WVk Todo funciona bastante bien, pero en la línea 39-41 trato de imprimir el correo electrónico de la cuenta actual. El resultado es "Array()". – Pwntus
¿Se han producido errores en los errores de visualización/visualización? ¿Has revisado tu registro de errores de PHP? – Narcissus