我正在这里测试和学习php-openid库:https://github.com/openid/php-openid
我下载了整个软件包并将示例/消费者上传到http://www.example.com/openid,并将Auth上传到http://www.example.com/Auth,因为我的网站只需要成为依赖方。
当我使用其中一个openids进行测试时,它正常工作,并显示“您已成功验证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
(
)
我试过了:
这一切都以$ sreg的空数组结束。
我尝试使用AX而不是SREG的lightopenid:
他们正确地返回了值。
那么如何让php-openid库返回我需要的属性呢?
答案 0 :(得分:0)
提供者是否实际返回了SREG属性?您从try_auth.php发送的HTTP响应是什么?您在finish_auth.php上收到的HTTP请求是什么?