Моя Laravel Версия 6. 6. 1001 *
Мой сайт предлагает пользователям функцию входа в Facebook. Когда пользователь нажимает кнопку «Войти через Facebook» , я получил его адрес электронной почты, имя в своей базе данных, и пользователь, как и ожидалось, перенаправляется на домашнюю страницу моего веб-сайта, но проблема заключается в том, что пользователь не вошел в систему. Я использовал Auth :: login ($ user) в моей функции перенаправления, но проблема все еще существует.
Пожалуйста, помогите мне решить эту проблему.
SocialAuthFacebookController. php
class SocialAuthFacebookController extends Controller
{
public function redirect($provider)
{
return Socialite::driver($provider)->redirect();
}
public function callback($provider, Request $request)
{
$state = $request->get('state');
$request->session()->put('state',$state);
$getInfo = Socialite::with($provider)->user();
$user = $this->createUser($getInfo,$provider);
Auth::login($user);
return redirect()->to('/home#');
}
function createUser($getInfo,$provider){
$user = User::where('provider_user_id', $getInfo->id)->first();
if (!$user) {
$user = User::create([
'name' => $getInfo->name,
'email' => $getInfo->email,
'provider' => $provider,
'provider_user_id' => $getInfo->id
]);
}
return $user;
}
}
Услуги / SocialFacebookAccountService. php
class SocialFacebookAccountService
{
public function createOrGetUser(ProviderUser $providerUser)
{
$account = SocialFacebookAccount::whereProvider('facebook')
->whereProviderUserId($providerUser->getId())
->first();
if ($account) {
return $account->user;
} else {
$account = new SocialFacebookAccount([
'provider_user_id' => $providerUser->getId(),
'provider' => 'facebook'
]);
$user = User::whereEmail($providerUser->getEmail())->first();
if (!$user) {
$user = User::create([
'email' => $providerUser->getEmail(),
'name' => $providerUser->getName(),
'password' => md5(rand(1,10000)),
]);
}
$account->user()->associate($user);
$account->save();
return $user;
}
}
}