我在登录Facebook时遇到了麻烦。
我正在使用Laravel Socialite,我已按照所有说明操作,但我在方法回调时遇到问题。
这就是我做的:
public function redirectToFacebook()
{
return Socialite::driver('facebook')->redirect();
}
public function handleFacebookCallback()
{
$userSocial = Socialite::driver('facebook')->user();
//return $userSocial;
$finduser = User::where('facebook_id', $userSocial->id)->first();
if($finduser){
Auth::login($finduser);
return Redirect::to('/');
}else{
$new_user = User::create([
'name' => $userSocial->name,
'email' => $userSocial->email,
'image' => $userSocial->avatar_original,
'facebook_id' => $userSocial->id
]);
Auth::login($new_user);
return redirect()->back();
}
}
SQLSTATE [HY000]:常规错误:1364字段'密码'没有默认值
如何获取Facebook的密码?
使用Socialite时,您不需要Facebook或任何其他服务的密码,因为您将从平台接收可以使用的令牌而不是用户名/密码。
这里的问题是您尝试在不提供密码的情况下创建用户,而密码字段在users表中不可为空。
例如,您可以通过创建更改密码列并使其可为空的迁移来解决此问题,即:
Schema::table('users', function (Blueprint $table) {
$table->string('password')->nullable()->change();
});
但是,您必须确定这是否是您想要的授权设置,以及您是否希望数据库中的用户没有密码。