我在这里测试和学习 php-openid 库:https ://github.com/openid/php-openid
我下载了整个包并将示例/消费者上传到http://www.example.com/openid并将 Auth 上传到http://www.example.com/Auth因为我的网站只需要成为依赖方。
当我使用我的一个 openid 对其进行测试时,它工作正常,并显示“您已成功验证 xxxxx 作为您的身份。”
但是,它不会返回任何 SREG 属性,例如我的 openid 配置文件中包含这些信息的电子邮件或姓名。
我没有对任何消费者示例文件(index.php、try_auth.php、finish_auth.php 或 common.php)进行任何更改,因此代码如下所示:
在 try_auth.php 中:
$sreg_request = Auth_OpenID_SRegRequest::build(
// Required
array('nickname'),
// Optional
array('fullname', 'email'));
if ($sreg_request) {
$auth_request->addExtension($sreg_request);
}
在finish_auth.php 中:
$sreg = $sreg_resp->contents();
if (@$sreg['email']) {
$success .= " You also returned '".escape($sreg['email']).
"' as your email.";
}
if (@$sreg['nickname']) {
$success .= " Your nickname is '".escape($sreg['nickname']).
"'.";
}
if (@$sreg['fullname']) {
$success .= " Your fullname is '".escape($sreg['fullname']).
"'.";
}
我试过了:
$sreg = $sreg_resp->contents();
print_r($sreg);
但结果却是一个空数组:
Array
(
)
我试过了:
- https://www.google.com/accounts/o8/id
- 雅虎网
- ichsie.myopenid.com
这一切都以一个空的 $sreg 数组结束。
我尝试了使用 AX 而不是 SREG 的 lightopenid:
- 联系电子邮件
- 姓名人
他们正确地返回了值。
那么如何让 php-openid 库返回我需要的属性呢?