Demande d'adresse e-mail du fournisseur OpenID en PHP
Question
Quelle est la façon la plus simple de demander une adresse e-mail à un fournisseur OpenID?
Y a-t-il une bonne bibliothèque PHP qui simplifie ce problème?
Je sais que les fournisseurs mettent en œuvre les choses différemment. J'ai entendu dire que vous devez faire à la fois un échange d'enregistrement et d'attribut simple. Je voudrais particulièrement m'assurer que cela a fonctionné avec les plus grands fournisseurs, tels que Myopenid et Google.
Questions liées, mais inadéquates:
La solution
Janrain a un Bibliothèque d'identité ouverte PHP, l'une des premières bibliothèques (je crois) d'une entreprise centrée à OpenID. Vous avez mentionné travailler avec MyopenID, sur le site de Janrain.
Cela dit, personnellement, j'utilise la bibliothèque Zend maintenant (j'ai joué avec la bibliothèque Janrain il y a des années), juste parce que je développe généralement en utilisant le framework Zend.
Voici quelques exemples de code si le fournisseur utilise le Extension d'enregistrement simple OpenID.
Cette Section de la référence Zend Le guide montre comment demander des informations sur l'utilisateur avec la demande d'authentification. Voici leur exemple de code édité pour vos besoins:
//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.");
}
Réaliser la même chose avec la bibliothèque Janrain est similaire, voici un code tiré du fichier try_auth.php du package de bibliothèque (je l'ai édité pour afficher les fonctions de base que vous recherchez):
$auth_request = $consumer->begin($openid);
$sreg_request = Auth_OpenID_SRegRequest::build(
// Required
array('email'),
// Optional
array('fullname', 'nickname'));
$auth_request->addExtension($sreg_request);
Pour Échange d'attribut Découvrez le Janrain Classes AUTH_OPENID_AX, dans la bibliothèque Zend, il y a un Demande de fonctionnalité pour la prise en charge de la hache.
Autres conseils
Je regarderais Bibliothèque OpenID de Zend Framework, Zend_OpenID. Vous devriez pouvoir l'utiliser sans le cadre entier.