Как получить Email пользователя при авторизации Вконтакте через Laravel Socialite

17 декабря 2018

Стандартный способ получения эл. почты в Laravel Socialite не работает для Вконтакте:

$userSocial = Socialite::driver('vkontakte')->user();
$user = new User;
$user->name = $userSocial->name;
$user->email = $userSocial->email;
$user->save();

Это происходит потому, что Вконтакте возвращает ответ в нестандартном формате JSON. Вот так можно получить почту пользователя:

public static function getUserEmail($user, $provider)
{
    if($provider == 'vkontakte') {
        return $user->accessTokenResponseBody['email'] ?? null;
    }
    return $user->email;
}
Добавить комментарий