从PHP请求OpenID提供商的电子邮件地址

时间:2009-11-12 16:06:50

标签: php openid openid2

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

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

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

相关但不充分的问题:

2 个答案:

答案 0 :(得分:2)

JanRain有一个Open ID PHP Library,是从公司到OpenID的第一批图书馆(我相信)之一。你提到使用MyOpenID,JanRain的网站。

那就是说,我个人现在使用Zend Library(我多年前使用过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 Library中有一个feature request for AX support

答案 1 :(得分:1)

我会看Zend Framework's OpenID Library, Zend_OpenID。你应该能够在没有整个框架的情况下使用它。