2016-12-14 5 views
1

Я работаю в аутентификации с Google в Yii2 Framework, и мне нужна помощь для получения атрибутов, потому что я не могу получить пользовательские атрибуты.Yii2 в AuthClient google получает пользовательские атрибуты. «Неопределенный индекс: электронная почта»

Мой web.php:

'google' => [ 
    'class' => 'yii\authclient\clients\Google', 
      'authUrl' => 'https://accounts.google.com/o/oauth2/auth?display=popup', 
      'clientId' => 'xxxxx', 
      'clientSecret' => 'xxxxx', 
], 

Мои действия в контроллере:

'auth' => [ 
    'class' => 'yii\authclient\AuthAction', 
    'successCallback' => [$this, 'successCallback'], 
    'successUrl' => \yii\helpers\Url::to(['selecionar-empresa']), 
], 

Мой successCallback:

$attributes = $client->getUserAttributes(); 
$user = User::find()->where(['email'=>$attributes['email']])->one(); 

Но successCallback вернуть эту ошибку:

Undefined index: email 

Может ли кто-нибудь помочь мне достичь этого, plis. tyyyy.

+0

Проверьте ваш * $ атрибуты * 'var_dump ($ атрибуты)'. Это могут быть ** электронные письма ** –

+0

var_dump в моих атрибутах $ return empty, но count ($ attributes) return 14,: / –

ответ

0

Заменить

$attributes = $client->getUserAttributes(); 
$user = User::find()->where(['email'=>$attributes['email']])->one(); 

С этим и попробовать.

$attributes = $client->getUserAttributes(); 
$user_email = $attributes['emails'][0]['value']; 
$user = User::find()->where(['email'=>user_email])->one(); 

Я надеюсь, что это будет работать для вас ...