3

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

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

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

相关但不充分的问题:

4

2 回答 2

2

JanRain 有一个Open ID PHP Library,这是一家以 OpenID 为中心的公司的首批库之一(我相信)。您提到了使用 JanRain 的站点 MyOpenID。

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

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

Zend 参考指南的这一部分展示了如何通过身份验证请求来请求用户信息。这是根据您的需要编辑的示例代码:

//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 类,在 Zend 库中有一个AX 支持的功能请求

于 2009-11-12T17:54:06.657 回答
1

我会看看Zend Framework 的 OpenID 库 Zend_OpenID。您应该能够在没有整个框架的情况下使用它。

于 2009-11-12T16:51:06.070 回答