Проблема, OpenID Простое Расширение Регистрации - PullRequest
0 голосов
/ 03 июля 2011

Я использую OpenID Simple Registration на CakePHP, как в этом посте , но у меня это не работает. мой код в контроллере здесь:

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);
            }
        }
    }

В чем моя проблема?!

1 Ответ

0 голосов
/ 04 июля 2011

Метод 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')));
...