установить имя пользователя и идентификатор в соответствии с именем пользователя и идентификатором Facebook - PullRequest
1 голос
/ 20 сентября 2011

Я разрабатывал приложение для Facebook на Yii, и после аутентификации я хочу установить имя пользователя и идентификатор в соответствии с именем пользователя и идентификатором Facebook. Так как я новичок в Yii, я не имею большого представления о том, как это сделать. Хотя, когда я попытался установить идентификатор пользователя в своем классе UserIdentity, он выдал ошибку о том, что

Property "UserIdentity.id" is read only.

Есть ли другой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Что вы используете для аутентификации сейчас?Если вы настраиваете веб-приложение, вы должны иметь класс UserIdentity в компонентах, расширяющих CUserIdentity.Обычно в этом случае вы должны использовать setState (), например $this->setState('first_name', $record->first_name);, чтобы установить имя пользователя из записи базы данных после аутентификации, например, которую вы можете получить с помощью Yii::app()->user->first_name

Однако, я думаю,то, что вы можете искать, это Yii::app()->user->name = 'newname';, который изменяет свойство CWebUser, которое CUserIdentity устанавливает во время аутентификации, с помощью значения CUserIdentity :: username.

Любой из вариантов подходит - установка пользовательского Yii :: app () -> user-> value или сброс значения Yii :: app () -> user-> name, в зависимости от того, что лучше всего подходит для вашего приложения.(Я бы не стал сбрасывать значение user-> id tho.)

1 голос
/ 21 сентября 2011

Хорошо, этот пост от DroidUser действительно помог лучше понять класс CUserIdentity. Хотя, когда я открыл CUserIdentity.php в Yiiroot / framework /, я обнаружил, что там определены только методы получения для чтения идентификатора и имени пользователя, но не для их установки.

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

и что они оба возвращают имя пользователя, с которым вы вошли, хотя я нашел класс CWebUser , который также расширен IUserIdentity. Здесь вы можете использовать

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

для фактического задания поля и присвоения ему некоторого значения и аналогичного метода getState для его чтения. Я думаю, что это решит мою проблему, так как все, что я хочу сделать, это сохранить некоторые значения идентификации пользователя в общесистемной доступной переменной. Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...