Laravel Socialite 2.0 Facebook身份验证仅返回ID和名称

时间:2015-07-12 18:03:27

标签: php facebook facebook-graph-api laravel laravel-socialite

我使用的是Laravel的Socialite软件包(版本2.0.0)。它对google和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 param。我只获得身份验证和经过身份验证的Facebook用户的名称。所以,这意味着我没有收到Facebook用户的电子邮件。我至少需要用户的nameemail

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',
    ]);
}

可能是什么问题?请帮帮我。

3 个答案:

答案 0 :(得分:6)

我有同样的问题,是一个错误!使用新版本的文件FacebookProvider.php here并工作!

答案 1 :(得分:1)

我更新了最新版本的Socialite。现在它有效!

答案 2 :(得分:0)

对于那些对如何更新到最新版本感到困惑的人来说 将其添加到 composer.json 文件中。

"laravel/socialite": "2.*"

并进入您的终端 作曲家更新

干杯!