在使用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 ()进行第二次调用时,如下所示:
$auth_result = $auth->authenticate(new Zend_Auth_Adapter_OpenId());这是可行的,$auth_result最终成为了Zend_Auth_Result::SUCCESS。
然而,在Zend_OpenId_Consumer文档中,为了获取返回的SREG数据,它说要这样做:
$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‘,但这似乎不是预期的模式。它解决了我的问题,但我仍然想知道是否有更正式的解决方案。)
https://stackoverflow.com/questions/4721127
复制相似问题