Cakephp 问题,OpenID简单注册扩展

Cakephp 问题,OpenID简单注册扩展,cakephp,openid,Cakephp,Openid,我在CakePHP上使用OpenID简单注册,但这不适合我。 我在控制器中的代码如下: function openid() { $returnTo = 'http://'.$_SERVER['SERVER_NAME'].$this->webroot.'customers/openid'; if (!empty($this->data)) { try { $this->Open

我在CakePHP上使用OpenID简单注册,但这不适合我。 我在控制器中的代码如下:

function openid() {
        $returnTo = 'http://'.$_SERVER['SERVER_NAME'].$this->webroot.'customers/openid';        
        if (!empty($this->data)) {
            try {
                $this->Openid->authenticate($this->data['OpenidUrl']['openid'], $returnTo, 'http://'.$_SERVER['SERVER_NAME'].$this->webroot, array('email'), array('nickname'));
            } catch (InvalidArgumentException $e) {
                $this->setMessage($this->data);
            } catch (Exception $e) {
                $this->setMessage($e->getMessage());
            }
        } 
        elseif (count($_GET) > 1) {
            $response = $this->Openid->getResponse($returnTo);
            $this->set("test",$_GET);
            if ($response->status == Auth_OpenID_CANCEL) {
                $this->Session->write('OpenIdStatus','Verification cancelled');
            } elseif ($response->status == Auth_OpenID_FAILURE) {
                       $this->Session->write('OpenIdStatus','OpenID verification failed: '.$response->message);
            } elseif ($response->status == Auth_OpenID_SUCCESS) {
                $this->Session->write('OpenIdStatus','successfully authenticated!');
                $sregResponse = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
                        $sregContents = $sregResponse->contents();
                    $this->set("message",$sregContents);
            }
        }
    }
我怎么了

authenticate方法在当前版本中只需要四个参数。以下代码段:

$this->Openid->authenticate($this->data['OpenidUrl']['openid'], $returnTo, 'http://'.$_SERVER['SERVER_NAME'].$this->webroot, array('email'), array('nickname'));
必须看起来像:

$this->Openid->authenticate($this->data['OpenidUrl']['openid'], $returnTo, 'http://'.$_SERVER['SERVER_NAME'].$this->webroot, array('sreg_required' => array('email'), 'sreg_optional' => array('nickname')));

谢谢我这样做了,但最后$sregContents是空数组!不要退回任何东西。我该怎么办?这可能是因为OpenID提供程序不支持SReg。您使用哪些OpenID提供程序进行测试?不,它们不支持SReg,它们只支持属性交换。要测试SReg是否在你的应用程序中工作,你可以使用Thanke for Attribute Exchange。我将尝试使用属性交换并再次询问: