Cakephp 问题,OpenID简单注册扩展
我在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
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。我将尝试使用属性交换并再次询问: