【发布时间】:2020-05-02 16:36:03
【问题描述】:
我有一个奇怪的问题,我无法弄清楚。我正在使用 Laravel Socialite 允许使用 Facebook 帐户登录,有很多用户抱怨他们帐户上显示的个人资料图片不正确,但是名称等都很好。
这对我来说毫无意义,因为名称和个人资料图片是同时直接从 FB 中提取的。
public function socialUser(ProviderUser $providerUser)
{
$account = SocialFacebookAccount::whereProvider('facebook')->whereProviderUserId($providerUser->getId())->first();
if ($account) {
return $account->user;
} else {
$account = new SocialFacebookAccount([
'provider_user_id' => $providerUser->getId(),
'provider' => 'facebook'
]);
$user = User::whereEmail( $providerUser->getId() )->first(); // changed from getEmail to getId as FB doesnt always give an email
if (!$user) {
$profilePicName = md5(rand(1,10000)) . ".jpg";
$contents = file_get_contents( $providerUser->avatar_original );
Storage::disk('local')->put( 'profiles/' . $profilePicName, $contents );
$user = User::create([
'email' => $providerUser->getEmail(),
'name' => $providerUser->getName(),
'profile_path' => $profilePicName
]);
}
$account->user()->associate($user);
$account->save();
return $user;
}
}
【问题讨论】:
标签: laravel facebook-graph-api laravel-socialite