Laravel社交名媛:始终抓住默认头像

问题描述

我允许用户使用Scialite进行注册(仍在启用openSSL的Laravel宅基地上本地工作)。它与FB配合正常,但头像始终会获得认图像。我正在使用与创建应用程序相同的FB帐户进行测试(FB应用程序处于开发模式)

enter image description here

代码

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]

请让我知道您是否找到更简单的解决方案。

结果是:

enter image description here

,

access_token 附加到查询中。像这样:

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

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