首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Zend_Auth和OpenID获取SREG数据

使用Zend_Auth和OpenID获取SREG数据
EN

Stack Overflow用户
提问于 2011-01-18 14:29:34
回答 1查看 302关注 0票数 1

在使用Zend_Auth_Adapter_OpenId时,我不知道如何获取SREG扩展值。我正在关注这些文档页面:

http://framework.zend.com/manual/en/zend.auth.introduction.html

http://framework.zend.com/manual/en/zend.openid.consumer.html

在有关身份验证的文档中,使用OpenID对Zend_Auth ()进行第二次调用时,如下所示:

代码语言:javascript
复制
$auth_result = $auth->authenticate(new Zend_Auth_Adapter_OpenId());

这是可行的,$auth_result最终成为了Zend_Auth_Result::SUCCESS。

然而,在Zend_OpenId_Consumer文档中,为了获取返回的SREG数据,它说要这样做:

代码语言:javascript
复制
$sreg = new Zend_OpenId_Extension_Sreg(array('email'=>false,'fullname'=>false), null, 1.1);
$consumer = new Zend_OpenId_Consumer();
$consumer->verify($_GET, $id, $sreg);

这也是可行的,因为verify()返回true,$ SREG ->getProperties()返回我请求的SREG字段。

问题是我不能同时做这两件事!如果我先调用authenticate(),然后verify()返回false。如果我先验证(),然后authenticate()返回Zend_Auth_Result::FAILURE。查看Zend/Auth/Adapter/OpenId.php中的代码,可以明显看出authenticate()在内部调用verify(),这是有意义的。但是,通过此内部调用填充的SREG值不会通过我所能看到的任何方式公开。我遗漏了什么?

(在输入这段代码并进行实验时,我发现我可以从$_GET中获取SREG值,例如$_GET‘’openid_ SREG _email‘,但这似乎不是预期的模式。它解决了我的问题,但我仍然想知道是否有更正式的解决方案。)

EN

回答 1

Stack Overflow用户

发布于 2011-12-20 01:44:47

Zend官方并不支持谷歌2.0和OpenID OpenID provider。但问题跟踪器提供了一个补丁。这是该补丁的link。您必须从该站点替换您的Consumer.php。在应用此补丁后,OpenID应与谷歌和其他主要提供商合作。

关于OP,从OpenID结果中获取SREG,对于GET参数还没有这样的标准。这已经在StackOverflow here和Meta StackOverflow here中讨论过一次。

Attribute Exchange是Zend Framework需要的另一个东西。

相关问题here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4721127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档