从OpenID提供商处请求电子邮件地址的最简单方法是什么?
是否有一个很好的PHP库来简化这个问题?
我知道提供商以不同的方式实施。我听说你需要做简单注册和属性交换。我特别想确保它与最大的提供商合作,例如MyOpenID和Google。
相关但不充分的问题:
答案 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。你应该能够在没有整个框架的情况下使用它。