Php 如何在Laravel 5.3中使用Facebook身份验证

Php 如何在Laravel 5.3中使用Facebook身份验证,php,laravel,Php,Laravel,我是拉威尔的初学者。我只想在我的网站上制作Facebook认证系统。我已经在我的项目中使用了社交。我在facebook回调函数中成功地检索到了facebook的用户信息,但我试图在laravel身份验证中传递注册和登录请求的信息 下面是我的facebook\u回调函数代码 function facebook_callback() { $user = Socialize::with('facebook')->user(); $registerCtrl = new Regist

我是拉威尔的初学者。我只想在我的网站上制作
Facebook认证系统
。我已经在我的项目中使用了
社交
。我在facebook回调函数中成功地检索到了facebook的用户信息,但我试图在laravel身份验证中传递注册和登录请求的信息

下面是我的
facebook\u回调
函数代码

function facebook_callback()
{
    $user = Socialize::with('facebook')->user();
    $registerCtrl = new RegisterController;
    $loginCtrl = new LoginController;

    $email = $user->getEmail();

    // Check if alredy registered
    $member = User::where('email','=',$email)->first();
    if($member===null){
        // Register user
        $nameArray = explode(" ",$user->getName()); 
        $fname = $nameArray[0];
        $lname = $nameArray[1];
        $password = $user->getId();

        $request = Request::create('/register','POST',array(
            "_token" => Session::token(),
            "fname" =>  $fname,
            "lname" =>  $lname,
            "email" =>  $email,
            "password" =>  $password,
            "password_confirmation" =>  $password
        ));
        $registerCtrl->register($request);
    }
    else{
        // Login user
        $password = $user->getId();

        $request = Request::create('/login','POST',array(
            "_token" => Session::token(),
            "email" =>  $email,
            "password" =>  $password
        ));
        $loginCtrl->login($request);
    }
    // $response = Route::dispatch($request);
    return redirect('/home');
}
我可以注册,但是当我尝试登录时,我遇到了这个错误


对于Laravel 5.2或5.3:如果需要会话状态、CSRF保护等,则需要使用web中间件

Route::group(['middleware' => ['web']], function () {
    // your routes here
});

您的上述代码是正确的。如果仍然无法工作,请检查kernel.php文件。在kernel.php中添加以下代码

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \App\Http\Middleware\UserVerificationChecker::class
        ],
];

我已经解决了这个问题,只需使用Auth($user)登录即可。下面是我的代码

function facebook_callback()
{

    $socialUser = Socialize::with('facebook')->user();
    $registerCtrl = new RegisterController;
    $email = $socialUser->getEmail();

    if($email==null){
        // User not allowed to use email
        if($this->checkExistUserByFacebookID($socialUser->id)==true){
            // Login user
            $user = User::where('email','=',$socialUser->id)->first();
            Auth::login($user);
        }
        else{
            // Register user first
            $nameArray = explode(" ",$socialUser->getName()); 
            $fname = $nameArray[0];
            $lname = $nameArray[1];
            $password = $socialUser->getId();
            $request = Request::create('/register','POST',array(
                "_token" => Session::token(),
                "fname" =>  $fname,
                "lname" =>  $lname,
                "email" =>  $socialUser->id,
                "password" =>  $password,
                "password_confirmation" =>  $password
            ));
            $registerCtrl->register($request);
        }
    }
    else{
        // User allowed to use email
        if($this->checkExistUserByEmail($socialUser->email)==true){
            // Login user
            $user = User::where('email','=',$email)->first();
            Auth::login($user);

        }
        else{
            // Register user first
            $nameArray = explode(" ",$socialUser->getName()); 
            $fname = $nameArray[0];
            $lname = $nameArray[1];
            $password = $socialUser->getId();
            $request = Request::create('/register','POST',array(
                "_token" => Session::token(),
                "fname" =>  $fname,
                "lname" =>  $lname,
                "email" =>  $email,
                "password" =>  $password,
                "password_confirmation" =>  $password
            ));
            $registerCtrl->register($request);
        }
    }
    return redirect('/home');
}

感谢Riyan Sheikh的帮助:)

检查重定向urlI的任何设置已解决问题,只需使用Auth($user)登录即可。下面是我的代码。