2011-09-20 59 views
1

我一直在制定關於Yii的,我想根據Facebook的用戶名和ID設置用戶名和ID認證後的Facebook應用程序設置的用戶名和ID。由於我是Yii的新手,我不知道如何去做。雖然當我試圖設置用戶ID在我的UserIdentity類,它給了一個錯誤,指出根據Facebook的用戶名和ID

Property "UserIdentity.id" is read only. 

是否有任何其他方式做到這一點?

+0

也許看看http://www.yiiframework.com/extension/facebook-connect/ – ldg

+1

看看此http://計算器.COM /問題/ 7458940 /警予,cuseridentity-VS-A-用戶模型/ 7459025#7459025 –

回答

2

你現在使用什麼進行身份驗證?如果你設置了一個webapp,你應該在擴展CUserIdentity的組件中有一個UserIdentity類。這通常是您將使用的setState(),像$this->setState('first_name', $record->first_name);從認證後數據庫記錄設置的用戶的名字,作爲一個例子,您可以通過Yii::app()->user->first_name

然而檢索,我認爲你可能會尋找是Yii::app()->user->name = 'newname';它更改CUserIdentity在使用CUserIdentity ::用戶名值進行身份驗證期間設置的CWebUser屬性。

任何一個選項都可以 - 設置自定義Yii :: app() - > user->值或重置Yii :: app() - > user->名稱值,以適合您的應用程序爲準。 (我不會重置用戶>的值id壽。)

1

那麼該職位由DroidUser確實有助於更好地瞭解CUserIdentity類的。雖然當我在Yiiroot/framework /中打開CUserIdentity.php時,發現只有讀取id和username的getter方法已經被定義,但是沒有設置它們。

public function getId() 
{ 
    return $this->username; 
} 
public function getName() 
{ 
    return $this->username; 
} 

而且它們都返回登錄所用的用戶名,但我發現了一個CWebUser類也被IUserIdentity延長。 在這裏,您可以使用

Yii::app()->user->setState('name',$value) 

實際設置一個字段,並分配一定的參考價值和它類似的getState方法來讀取它。 我認爲這將解決我的問題,因爲我想要做的就是將一些用戶標識值存儲在系統範圍的可訪問變量中。 有什麼建議嗎?