0

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

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

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

4

1 回答 1

1

如果 Google 传递了一个性别字段,您应该能够像访问它一样访问它……

$user = Socialite::driver('google')->user();
echo $user['gender'];
于 2016-03-22T15:48:32.043 回答