laravel - Facebook auth 返回空名称和电子邮件 laravel 8 sociallite
问题描述
我正在尝试添加 Facebook 身份验证,但是当响应返回时,它显示一个空电子邮件和名称。我需要一封电子邮件来注册用户以执行某些活动。
public function socialLoginfb()
{
// return Socialite::driver('facebook')->redirect();
return Socialite::driver('facebook')
->fields(['first_name', 'last_name', 'email', 'gender', 'birthday'])
->scopes(['email', 'user_birthday'])
->redirect();
}
public function handleProviderFacebookCallback(Request $request)
{
if (!$request->has('code') || $request->has('denied')) {
return redirect()
->route('register')
->with(['error' => __('You cancelled the social login')]);
}
try {
$user = Socialite::driver('facebook')
->fields(['first_name', 'last_name', 'email', 'gender', 'birthday'])
->user();
dd($user);
} catch (Exception $e) {
return redirect()
->route('register')
->with(['error'=> __('Something went wrong')]);
}
// return // $user->token;
if (empty($user->getEmail())) {
return redirect()
->route('register')
->with(['error' => __('Please Turn on Email to login')]);
}
$userFound = User::where('email', $user->getEmail())->first();
// If user is not registered then he will be registered as customer
if (!$userFound) {
DB::beginTransaction();
$random = rand(10, 99);
$referral = substr($user->getEmail(), 0, strpos($user->getEmail(), '@')).$random;
$userFound = new User();
$userFound->name = $user->getName();
$userFound->email = $user->getEmail();
$userFound->email_verified_at = now();
$userFound->referral = $referral;
$userFound->loyalty_point = 0;
$userFound->save();
$image='';
// if($user->avatar_original) {
// $url=$user->avatar_original;
//
// // Load the file contents into a variable.
// $contents = file_get_contents($url);
// $image=Storage::put('profiles', $contents);
// }
$profile = Profile::firstOrNew(['user_id' => $userFound->id]);
$profile->user_id = $userFound->id;
$profile->fname = $user->getName();
$profile->save();
DB::commit();
}
}
我的控制器中有这段代码来处理请求。请告诉我解决方案。
此外,还有一件事,它在打开 Facebook 访问模式时不显示电子邮件访问权限。
解决方案
推荐阅读
- mysql - 通过单击输入文本框从 R Shiny 运行 SQL 查询
- sql - SQL Server 滞后和领先
- laravel - Laravel 调度程序是否有可能跳过命令?
- javascript - 检测点击并比较 URL
- ios - react-native 和 GVRKit 之间的符号重复
- azure - 如何检查我的 azure 网站实例计数是否被利用?
- xslt - 我怎样才能使这段代码更有条理或更容易看到,这里的 if 语句不是很好
- reactjs - onClick 事件仅在 chrome 78 中双击时触发
- logging - 作业超过最大日志长度,已终止
- url - 如何使用 Firebase/Google 云功能接收 Apple 的订阅状态 url 通知?