Я использую Socialite-пакет для входа в LinkedIn и регистрации.Если пользователь выполняет вход в LinkedIn и на сайте LinkedIn, если его просят ввести учетные данные LinkedIn, то при перенаправлении на мой сайт Laravel пользователь не входит в систему.После этого, если пользователь снова щелкнет по имени входа в LinkedIn, то пользователю не будет предложено ввести учетные данные в LinkedIn, после чего при перенаправлении обратно на мой сайт Laravel пользователь будет успешно авторизован (тот же код контроллера работает нормально во второй раз и так далее до тех пор, пока не будет запущен файл cookie).набор входа в LinkedIn).
Вот мой код:
public function redirectToLinkedin()
{
return Socialite::driver('linkedin')->redirect();
}
public function handleLinkedinCallback(Request $request)
{
if($request->has('error') && $request->query('error') == 'user_cancelled_login'){
return redirect()->route('login');
}else{
$linkdinUser = Socialite::driver('linkedin')->stateless()->user();
$user = User::getUserByEmail($linkdinUser->email);
if($user) {
if($user->verified == 0) {
return redirect()->route('login')
->withErrors(['active' => __('validation.verify_your_account')])
->withInput();
}else {
//THIS CODE IS NOT WORKING TO LOGIN THE USER
Auth::loginUsingId($user->user_id);
$sessionManager = new SessionManager();
$session = $sessionManager->setLoggedInUserDetails($user);
return redirect()->route('user.basic.profile.edit', $user->user_id);
}
}
elseif(!$request->session()->has('userSelectedRoleForRegister')){
return redirect()->route('select.role.to.register')
->withErrors(['error' => __('validation.select_role'),])
->withInput();
}
else {
$data = [
'first_name' => $linkdinUser->user['firstName'],
'email' => $linkdinUser->email,
'linkedin_id' => $linkdinUser->id,
'role' => session('userSelectedRoleForRegister'),
'profile_image_url' => $linkdinUser->avatar_original,
];
$user = $this->create($data);
return redirect()->route('after.signup.email', $user->email);
}
}
}
Я сохраняю сеанс входа в систему в сеансе.
Спасибо!