Pregunta

¿Cuál es la forma más sencilla de solicitar una dirección de correo electrónico a un proveedor de OpenID?

¿Hay una buena biblioteca PHP que simplifique este problema?

Sé que los proveedores implementan las cosas de manera diferente. Escuché que necesita hacer tanto registro simple como intercambio de atributos. En particular, me gustaría asegurarme de que funcionara con los proveedores más grandes, como Myopenid y Google.

Preguntas relacionadas, pero inadecuadas,:

¿Fue útil?

Solución

Janrain tiene un Biblioteca de Php de ID de abierto, una de las primeras bibliotecas (creo) de una empresa centrada en OpenID. Mencionaste trabajar con Myopenid, cuyo sitio de Janrain.

Dicho esto, personalmente uso la Biblioteca Zend ahora (jugué con la Biblioteca Janrain hace años), solo porque generalmente me desarrollaré usando el marco Zend.

Aquí hay algunos ejemplos de código si el proveedor usa el Extensión de registro simple de OpenID.

Este Sección de la referencia de Zend La guía muestra cómo solicitar información del usuario con la solicitud de autenticación. Aquí está su código de ejemplo editado para sus necesidades:

//require e-mail, get nickname and fullname if available
$sreg = new Zend_OpenId_Extension_Sreg(array(
    'nickname'=>false,
    'email'=>true,
    'fullname'=>false), null, 1.1);
$consumer = new Zend_OpenId_Consumer();
if (!$consumer->login($openid, $returnUrl, null, $sreg)) {
    die("OpenID login failed.");
}

Lograr lo mismo con la Biblioteca Janrain es similar, aquí hay algún código tomado del archivo try_auth.php del paquete de la biblioteca (lo edité para mostrar las funciones básicas que está buscando):

$auth_request = $consumer->begin($openid);
$sreg_request = Auth_OpenID_SRegRequest::build(
                                 // Required
                                 array('email'),
                                 // Optional
                                 array('fullname', 'nickname'));
$auth_request->addExtension($sreg_request);

Para Intercambio de atributos Mira el Janrain Auth_openid_ax clases, en la biblioteca Zend hay un Solicitud de función para soporte AX.

Otros consejos

Yo miraría La biblioteca OpenID de Zend Framework, zend_openid. Debería poder usarlo sin todo el marco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top