我在与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或任何其他服务的密码,因为您将从平台中收到一个令牌,而不是用户名/密码。
这里的问题是,您正在尝试创建用户而不提供密码,而用户表中的密码字段并非无效。
您可以通过创建更改密码列的迁移并使其无效,即:
来解决此问题。Schema::table('users', function (Blueprint $table) {
$table->string('password')->nullable()->change();
});
仍然,您必须确定这是否是您想要的授权设置,以及是否希望数据库中的用户没有密码。