如何覆盖原生社交网站提供商?

时间:2016-03-22 15:40:24

标签: php laravel laravel-5.2 laravel-socialite

由于我有兴趣在用户注册时从社交网络获取性别信息,我注意到本地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位于供应商文件夹中。

问题是,我如何在Laravel提供的不同社交提供者中覆盖mapUserToObject?

或者,在这种情况下推荐的方法是什么?

1 个答案:

答案 0 :(得分:1)

如果Google通过了性别字段,您应该能够访问它...

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