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)登录即可。下面是我的代码。