我使用的是Laravel的Socialite软件包(2.0.0版)。它是伟大的谷歌和github,但当我试图登录facebook,我得到这个:
ErrorException in FacebookProvider.php line 89:
Undefined index: first_name
在FacebookProvider.php
中,错误来自以下方法:
protected function mapUserToObject(array $user)
{
return (new User)->setRaw($user)->map([
'id' => $user['id'], 'nickname' => null, 'name' => $user['first_name'].' '.$user['last_name'],
'email' => isset($user['email']) ? $user['email'] : null, 'avatar' => $this->graphUrl.'/'.$this->version.'/'.$user['id'].'/picture?type=normal',
]);
}
如果我在此映射之前dd()
的$user
参数。我只得到身份验证的Facebook用户的id和名称。所以,这意味着我没有收到Facebook用户的电子邮件。我至少需要用户的name
和email
。
在dd()
之后,这个方法看起来像这样:
protected function mapUserToObject(array $user)
{
dd($user);
return (new User)->setRaw($user)->map([
'id' => $user['id'], 'nickname' => null, 'name' => $user['first_name'].' '.$user['last_name'],
'email' => isset($user['email']) ? $user['email'] : null, 'avatar' => $this->graphUrl.'/'.$this->version.'/'.$user['id'].'/picture?type=normal',
]);
}
有什么问题吗?
我有同样的问题,这是一个bug!使用新版本的文件FacebookProvider.php在这里和工作!
我更新到最新版本的Socialite。现在它工作了!
对于那些对如何更新到最新版本感到困惑的人只是将其添加到编写器中。json 文件。
"laravel/socialite": "2.*"
进入你的终端composer update
干杯!