从PHP中的OpenID提供程序请求电子邮件地址

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

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

我知道提供程序的实施方式有所不同.我听说您需要同时进行简单注册属性交换.我特别想确保它可以与最大的提供商(例如MyOpenID和Google)一起使用.

相关但不足的问题:

> Request email address from OpenID provider(以.NET为中心)
> OpenID Attribute Exchange – should I use it?

解决方法:

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.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...