我不知道该怎么办才能解决这个问题。我已经研究和测试了各种解决方案3天。我需要能够帮助我的人呼吁团结。
在localhost中,它对我来说很完美。但是在生产中,我无法获得解决方案的结果。我将逐步详细介绍,看看有头脑的人是否发现了错误的地方
路线
Route::get('login/{driver}', [LoginController::class, 'redirectToProvider']);
Route::get('login/{driver}/callback', [LoginController::class, 'handleProviderCallback']);
LoginController
//Socialite
public function redirectToProvider($driver)
{
$drivers = ['google'];
if(in_array($driver, $drivers)){
return Socialite::driver($driver)->redirect();
}else{
return redirect()->route('login')->with('info', $driver . ' no es una aplicación valida para poder loguearse');
}
}
public function handleProviderCallback(Request $request, $driver)
{
if($request->get('error')){
return redirect()->route('login')->with('info', 'Ocurrió un error, vuelva a intentarlo más tarde.');
}
$userSocialite = Socialite::driver($driver)->user();
$social_profile = SocialProfile::where('social_id', $userSocialite->getId())
->where('social_name', $driver)->first();
if(!$social_profile){
$user = User::where('email', $userSocialite->getEmail())->first();
if(!$user){
$user = User::create([
'name' => $userSocialite->user['given_name'],
'apellido' => $userSocialite->user['family_name'],
'email' => $userSocialite->getEmail(),
'permiso' => 'USUARIO',
'tipo_usuario' => 'PARTICULAR'
]);
}
SocialProfile::create([
'user_id' => $user->id,
'social_id' => $userSocialite->getId(),
'social_name' => $driver,
'social_avatar' => $userSocialite->getAvatar()
]);
}
auth()->login($social_profile->user);
return redirect()->route('panel');
/* dd($user->user['given_name']); */
// $user->token;
}
Session.php
'domain' => env('SESSION_DOMAIN', 'domain.com/'),
错误
/home/brooklyn/Sistema/app/Http/Controllers/Auth/LoginController.php(82): Laravel \ Socialite \ Two \ AbstractProvider-> user()
{“ exception”:“ [对象] (Laravel \ Socialite \ Two \ InvalidStateException(代码:0):在 /home/brooklyn/Sistema/vendor/laravel/socialite/src/Two/AbstractProvider.php:209)
我删除了服务器,并在另一个Apache服务器帐户上重新创建了所有Google Auth凭据,但我遇到了同样的问题。我尝试了各种解决方案,但找不到解决方案。 请帮帮我。