В своем проекте я сделал так:
1. Запилил свой клаас "OAuth2_VKontakteService.php"
2. Отнаследовал его от "nodge\eauth\services\VKontakteOAuth2Service"
3. Переопределил в нем параметры и методы.
<?php
namespace frontend\models;
use common\models\User;
use nodge\eauth\services\VKontakteOAuth2Service;
/**
* VKontakte provider class.
*
* @package application.extensions.eauth.services
*/
class OAuth2_VKontakteService extends VKontakteOAuth2Service
{
const SCOPE_FRIENDS = 'friends';
const SCOPE_EMAIL = 'email';
protected $name = 'vkontakte';
protected $title = 'VK.com';
protected $type = 'OAuth2';
protected $jsArguments = array('popup' => array('width' => 500, 'height' => 450));
protected $scopes = [self::SCOPE_EMAIL];
protected $providerOptions = [
'authorize' => 'http://api.vk.com/oauth/authorize',
'access_token' => 'https://api.vk.com/oauth/access_token'
];
protected $baseApiUrl = 'https://api.vk.com/method/';
protected function fetchAttributes()
{
$tokenData = $this->getAccessTokenData();
$info = $this->makeSignedRequest('users.get.json', array(
'query' => array(
'uids' => $tokenData['params']['user_id'],
'fields' => 'email, sex, bdate, photo_big'
)
));
$info = $info['response'][0];
$this->attributes['service'] = $this->getServiceName();
$this->attributes['id'] = $info['uid'];
$this->attributes['url'] = 'http://vk.com/id' . $info['uid'];
$this->attributes['name'] = $info['first_name'] . ' ' . $info['last_name'];
$this->attributes['firstname'] = $info['first_name'];
$this->attributes['lastname'] = $info['last_name'];
$this->attributes['gender'] = ($info['sex'] === 2) ? User::SEX_MALE : User::SEX_FEMALE;;
$b = explode('.', $info['bdate']);
$this->attributes['birthday'] = $b[2] . '-' . $b[1] .'-' . $b[0];
$this->attributes['photo'] = $info['photo_big'];
$this->attributes['email'] = $tokenData['params']['email'];
$this->attributes['info'] = $info;
return true;
}
}
P.S.: Тоже самое я сделал для twitter, facebook, odnoklasniki и др. Для чего я это делал? А для того, чтобы все используемые OAuth сервисы возвращали полученные данные в одном формате, ибо после авторизации они передаются в модель и валидируются.