2009-11-12 123 views
3

从OpenID提供商请求电子邮件地址的最简单方法是什么?在PHP中从OpenID提供商请求电子邮件地址

有没有一个很好的PHP库来简化这个问题?

我知道提供者实施不同的事情。我听说你需要做简单注册和属性交换。我特别想确保它与MyOpenID和Google等最大的提供商合作。

相关,但不够,问题:

回答

2

JanRain拥有一个Open ID PHP Library,这是一家从公司到OpenID的首批图书馆(我相信)。你提到与JanRain的网站MyOpenID合作。

这就是说,我个人现在使用Zend库(我在几年前玩过JanRain库),只是因为我通常使用Zend Framework进行开发。

以下是一些代码示例,如果提供商使用OpenID简单注册扩展

section of the Zend Reference指南显示了如何通过认证请求请求用户信息。以下是编辑为您的需要他们的示例代码:

//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."); 
} 

实现同样与JanRain库类似,这里是从库包的try_auth.php文件的一些代码(我编辑它显示的基本功能你要找的):

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

对于属性交换退房的JanRain Auth_OpenID_AX Classes,Zend库中有一个feature request for AX support

+0

谢谢...但是你有使用Zend拉电子邮件地址的经验吗?它如何与不同的供应商合作? – philfreo 2009-11-13 00:55:54

+0

我已经添加了来自Zend文档的示例代码。 – 2009-11-13 15:08:30

+0

所以基本上你仍然需要尝试使用SR获取数据,然后尝试AX如果失败了? – philfreo 2009-11-17 00:38:46

相关问题