He estado jugando con la biblioteca de PHP de OpenID de JanRain, la mayoría siguiendo junto con a tutorial I found on ZendZone.¿Cómo distinguir/identificar usuarios con OpenID sin solicitar campos SReg?
¿Cómo se distingue entre los usuarios, especialmente los usuarios de Google, que terminan usando la misma URL de OpenID, https://www.google.com/accounts/o8/id?
Básicamente, estoy en el punto donde puedo detectar que tienen una cuenta OpenID ... que se han autenticado con éxito ... pero mi aplicación aún no sabe quiénes son; solo que ellos autenticaron.
Para distinguir a los usuarios, el tutorial utiliza una "Solicitud de registro simple" para solicitar el correo electrónico del usuario del proveedor de OpenID y luego usa la dirección de correo electrónico para ver si este es un usuario recurrente.
No funcionó para mí, y apparently won't work with some providers, así que estaba emocionado cuando me encontré con una función getDisplayIdentifier
.
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
// create file storage area for OpenID data
$store = new Auth_OpenID_FileStore('/wtv');
$consumer = new Auth_OpenID_Consumer($store);
$oid_response = $consumer->complete("http://example.com/oir_return");
if ($oid_response->status == Auth_OpenID_SUCCESS) {
$hopefullyUniqueUserID = $oid_response->getDisplayIdentifier(); // I assumed this would be a relatively permanent way to identify the user...
// I was wrong.
}
Desafortunadamente, después de un par de horas que el valor devuelto por getDisplayIdentifier
cambios.
Lea la especificación con cuidado. 'https: // www.google.com/accounts/o8/id' es el identificador proporcionado por el usuario, el usuario no afirma necesariamente que lo posee, su propósito puede ser simplemente guiar al usuario para seleccionar un identificador, como es el caso con Google. – Artefacto