Laravel with facebook login



我在与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();
});

仍然,您必须确定这是否是您想要的授权设置,以及是否希望数据库中的用户没有密码。

最新更新