如何覆盖本地社交名流提供者?
How to override native socialite provider?
因为我有兴趣在用户注册时从社交网络获取性别信息,我注意到原生 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?
或者,在这种情况下推荐的方法是什么?
提供 Google 传递一个性别字段,您应该可以像...
$user = Socialite::driver('google')->user();
echo $user['gender'];
因为我有兴趣在用户注册时从社交网络获取性别信息,我注意到原生 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?
或者,在这种情况下推荐的方法是什么?
提供 Google 传递一个性别字段,您应该可以像...
$user = Socialite::driver('google')->user();
echo $user['gender'];