Laravel与Facebook登录

时间:2019-03-06 10:34:23

标签: php laravel facebook laravel-socialite

我在使用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的密码?

1 个答案:

答案 0 :(得分:0)

使用Socialite时,您不需要Facebook或任何其他服务的密码,因为您将从平台上收到一个令牌,您可以使用该令牌代替用户名/密码。

这里的问题是,您试图在不提供密码的情况下创建用户,而用户表中的密码字段不可为空。

例如,您可以通过创建一个迁移来解决此问题,该迁移可以更改密码列并使之为空,即:

Schema::table('users', function (Blueprint $table) {
    $table->string('password')->nullable()->change();
});

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