问题描述
我允许用户使用Scialite进行注册(仍在启用openSSL的Laravel宅基地上本地工作)。它与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 变量将包含个人资料图片的正确网址。