Как переопределить собственного поставщика социальных сетей?

Поскольку я заинтересован в получении информации о поле из социальной сети при регистрации пользователя, я заметил, что гендерное сопоставление отсутствует в родном поставщике социальных сетей Laravel, например:

GoogleProvider.php

protected function mapUserToObject(array $user)
    {
        return (new User)->setRaw($user)->map([
            'id' => $user['id'], 'nickname' => array_get($user, 'nickname'), 'name' => $user['displayName'],
            'email' => $user['emails'][0]['value'], 'avatar' => array_get($user, 'image')['url'],
        ]);
    }

Итак, я не могу просто отредактировать приведенный выше метод и сопоставить поле гендера, потому что GoogleProvider.php находится в папке поставщика.

Вопрос в том, как мне переопределить mapUserToObject в разных социальных сетях, предоставляемых Laravel?

Или, каков рекомендуемый подход в таком случае?


person Mohammad AL-Raoosh    schedule 22.03.2016    source источник


Ответы (1)


Предоставив Google пропуск поля пола, вы сможете получить к нему доступ, например...

$user = Socialite::driver('google')->user();
echo $user['gender'];
person fire    schedule 22.03.2016