Я установил расширение EOAUTH, я могу аутентифицироваться с помощью Google, но мне интересно, как после этого получить информацию о пользователе

Поздравляю вас с наступающим Новым годом. Начну с моей первой проблемы в этом году.

вот что я делаю в методе входа в систему пользовательского контроллера:

Yii::import('ext.eoauth.*');

            $ui = new EOAuthUserIdentity(
                            array(
                            //Set the "scope" to the service you want to use
                                            'scope'=>'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile',
                                            'provider'=>array(
                                                            'request'=>'https://www.google.com/accounts/OAuthGetRequestToken',
                                                            'authorize'=>'https://www.google.com/accounts/OAuthAuthorizeToken',
                                                            'access'=>'https://www.google.com/accounts/OAuthGetAccessToken',
                                            )
                            )
            );

            if ($ui->authenticate()) {
                    $user=Yii::app()->user;
                    $user->login($ui);
                    $this->redirect(array('loggedin'));
            }
            else 
                    throw new CHttpException(401, $ui->error);

он зарегистрирован, и вместо имени отображается токен-ключ.. мне нужно получить электронную почту, по крайней мере, чтобы сохранить ее в БД... Пожалуйста, помогите мне.. заранее спасибо


person sonorita    schedule 02.01.2014    source источник
comment
вы пробовали Yii::app()-›user-›name; ?   -  person Let me see    schedule 02.01.2014
comment
Да.. Это дает имя Гость, которому нужно имя пользователя или почтовый идентификатор   -  person sonorita    schedule 02.01.2014
comment
вы вошли в систему успешно?   -  person Let me see    schedule 02.01.2014
comment
Да.. он вошел в систему и его отображаемый ключ вместо имени.. Я проверил этот класс EOAuthUserIdentity, где метод getName имеет ниже общедоступную функцию getName() { return $this-›provider-›token-›key; }.. Итак, он возвращает ключ.. я изменил его на имя.. он отобразит ошибку   -  person sonorita    schedule 02.01.2014


Ответы (2)


В классе UserIdentity вам нужно написать строку, т.е.

$this->setState('name', 'value');

Это используется для установки `Yii::app()->user->name, поэтому, если вы установите его как

$this->setState('name', $record->email);
$this->errorCode=self::ERROR_NONE;

в вашем классе UserIdentity, тогда Yii::app()->user->name вернет вам адрес электронной почты или все, что вы хотите

person Let me see    schedule 02.01.2014
comment
Поправьте меня, если я ошибаюсь... В примере мы вызываем класс EOAuthUserIdentity... внутри него мы не получим никакой записи $record-›email.. Какое значение мне нужно установить для имени - person sonorita; 02.01.2014
comment
замените $record-›email значением, которое вы хотите установить. Это был просто пример - person Let me see; 02.01.2014

Я много раз пытался получить информацию о пользователе, используя приведенный выше код. К сожалению, мне это не удалось. Затем я начал с интеграции eauth. Я загрузил демонстрационный пример в URL-адрес и добавил расширение в папку расширения внутри защищенного и настроил main.php. , Я получил интеграцию более чем 10 интеграций входа в систему.. Я прокомментировал расширение сервисов внутри тега компонента в main.php, чтобы получить интеграцию входа в Google и Yahoo.. Это работает... Что заставило меня также получить доступ к имени пользователя.. Спасибо за поддержкой..
демонстрация eauth

Для интеграции найдите ссылку ниже Ссылка для интеграции для eauth

person sonorita    schedule 02.01.2014