Laravel socialite: 总是抓取默认头像

Laravel socialite: always grab default avatar

我允许用户使用 Scialite 注册(仍然在 Laravel homestead 本地工作并启用 openSSL)。它与 FB 一起工作正常,除了头像它总是获得默认图像。我正在使用创建该应用程序的同一个 FB 帐户进行测试(FB 应用程序处于开发模式)

代码

public function handleProviderCallback($provider)
{
    $userSocial =   Socialite::driver($provider)->user();
    $users       =   User::where(['email' => $userSocial->getEmail()])->first();
    if($users){
        Auth::login($users);
        return redirect('/');
    }else{
        $avatar_file_name = 'test';
        if(!empty($userSocial->getAvatar()) && $userSocial->getAvatar()!='' && $userSocial->getAvatar() != null)
        {
            $fileContents = file_get_contents($userSocial->getAvatar());
            File::put(public_path() . '/uploads/' . $userSocial->getId() . ".jpg", $fileContents);
            $avatar_file_name =  $userSocial->getId() . ".jpg";
        }

        $user = User::create([
            'name'          => $userSocial->getName(),
            'email'         => $userSocial->getEmail(),
            'avatar'         => $avatar_file_name,
            'provider_id'   => $userSocial->getId(),
            'provider'      => $provider,
        ]);
        Auth::login($user, true);
        return redirect()->route('home');
    }
}

当我 dd($userSocial->getAvatar()) 并复制 URL 时,它会打开默认头像(上图),这是为什么?有什么我必须做的FB App或登录代码才能获得用户的真实头像吗?

我现在遇到了这个问题。大约一个月前,社会名流头像检索工作正常。但是前几天看的时候坏了。所以当前的解决方案只是附加 access_token 来检索如下所示的图像。

https://graph.facebook.com/v3.3/[facebook_user_id]/picture?type=normal&access_token=[fbtoken]

如果您找到更简单的解决方案,请告诉我。

结果是:

access_token 附加到查询

像这样:

$social = Socialite::driver('facebook')->user();
$avatar = $social->avatar_original . "&access_token={$social->token}";

$avatar 变量将包含个人资料图片的正确 url。