【发布时间】:2010-09-22 17:12:20
【问题描述】:
我是 OpenID 逻辑的新手。我正在使用 Cakebaker 的 CakePHP 的 OpenID 组件,以及 JanRain 的 PHP OpenID 库。
一切运行良好,但我找不到根据提供者和方法(sreg 与 ax)检索用户信息的详尽方法。所以这就是我想出的:
if ($axResponse) {
if (is_array($a = $axResponse->get('http://axschema.org/contact/email'))) {
$user_record['email'] = $a[0];
if (is_array($b = $axResponse->get('http://axschema.org/namePerson'))) {
$user_record['nickname'] = $b[0];
}
} else if (is_array($a = $axResponse->get('http://schema.openid.net/contact/email'))) {
$user_record['email'] = $a[0];
if (is_array($b = $axResponse->get('http://schema.openid.net/namePerson'))) {
$user_record['nickname'] = $b[0];
}
}
} else if ($sreg) {
if (isset($sreg['email'])) {
$user_record['email'] = $sreg['email'];
}
if (isset($sreg['nickname'])) {
$user_record['nickname'] = $sreg['nickname'];
}
}
虽然我用谷歌测试成功,但雅虎!和 AOL 的 OpenID,我敢肯定我会遇到其他/较小的提供商的麻烦。有没有更好更好的方法来达到同样的效果?如果我尝试获取其他可选字段,这似乎特别有缺陷......
【问题讨论】: