2009-08-13 55 views
0

下面是我的OpenId實現的一個工作示例。我使用hyves.nl作爲OpenId提供程序,但這也適用於me.yahoo.com和其他OpenId提供程序(但不包括Google)。Zend_OpenId_Extension_Sreg在我失敗

到目前爲止這麼好。但是現在我想從我的hyves配置文件中獲取暱稱和/或全名。但是當我在$ props數組中設置暱稱和/或全名爲true時,我根本無法再登錄。

我在這裏做錯了什麼?

class TestController extends Zend_Controller_Action 
{ 
    private $_sreg = null; 

    public function init() 
    { 
     $props = array('nickname' => false, 
     'email' => false, 
     'fullname' => false, 
     'dob' => false, 
     'gender' => false, 
     'postcode' => false, 
     'country' => false, 
     'language' => false, 
     'timezone' => false); 

     $this->_sreg = new Zend_OpenId_Extension_Sreg($props); 
    } 

    public function loginAction() 
    { 
     $consumer = new Zend_OpenId_Consumer(); 

     if (!$consumer->login('hyves.nl', 'http://localhost/trouwcom/public/test/verify', 'http://localhost/trouwcom', $this->_sreg)) 
     { 
      echo 'Login failed'; 
     } 

     $this->_helper->viewRenderer->setNoRender(); 
    } 

    public function verifyAction() 
    { 
     $consumer = new Zend_OpenId_Consumer(); 

     if ($consumer->verify($_GET, $id, $this->_sreg)) 
     { 
      echo 'VALID ' . htmlspecialchars($id); 

      $data = $this->_sreg->getProperties(); 
      print_r($data); 
     } 

     else 
     { 
      echo 'INVALID ' . htmlspecialchars($id); 
     } 

     $this->_helper->viewRenderer->setNoRender(); 
    } 
} 

回答

0
+0

剛查過我的個人資料。它完全填充。 – Erik 2009-08-13 11:44:15

+0

順便說一句,當使用鏈接中的固定代碼時,我不再收到INVALID錯誤。但$ this - > _ sreg-> getProperties()數組只是沒有賦值的鍵。 – Erik 2009-08-13 11:47:47

0

不知道你是否已經找到了答案。但是如果你沒有或者其他人像我一樣閱讀這個問題並且遇到同樣的問題,我只是找到了答案。

openId提供程序「hyves.nl」的問題在於它們不會通過$ _GET而是通過$ _POST返回驗證參數。

# This works  
$consumer->verify($_POST, $id, $this->_sreg);