Авторизация через соцсети в laravel 10
Есть проект на Ларавел, в котором я регистрируюсь через соц.сети
web.php (Роуты):
Route::get('social-auth/{provider}', [SocialController::class, 'redirectToProvider'])->name('auth.social');
Route::get('social-auth/{provider}/callback', [SocialController::class, 'handleProviderCallback'])->name('auth.social.callback');
Controller (SocailController.php)
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
public function handleProviderCallback($provider)
{
$socialiteUser = Socialite::driver($provider)->user();
$user = $this->findOrCreateUser($provider, $socialiteUser);
auth()->login($user, true);
return redirect()->route('index');
}
public function findOrCreateUser($provider, $socialiteUser)
{
if ($user = $this->findUserBySocialId($provider, $socialiteUser->getId())) {
return $user;
}
if ($user = $this->findUserByEmail($provider, $socialiteUser->getEmail())) {
$this->addSocialAccount($provider, $user, $socialiteUser);
return $user;
}
$user = User::create([
'name' => $socialiteUser->getName(),
'email' => $socialiteUser->getEmail(),
'password' => bcrypt(Str::random(25)),
]);
$this->addSocialAccount($provider, $user, $socialiteUser);
return $user;
}
public function findUserBySocialId($provider, $id)
{
$socialAccount = SocialAccounts::where('provider', $provider)
->where('provider_id', $id)
->first();
return $socialAccount ? $socialAccount->user : false;
}
public function findUserByEmail($provider, $email)
{
return !$email ? null : User::where('email', $email)->first();
}
public function addSocialAccount($provider, $user, $socialiteUser)
{
SocialAccounts::create([
'user_id' => $user->id,
'provider' => $provider,
'provider_id' => $socialiteUser->getId(),
'token' => $socialiteUser->token,
]);
}
Модель 'SocialAccounts' привязана к таблице 'Socual_account'
Когда я авторизуюсь через VK или Google, меня редиректят на главную страницу сайта с GET-параметрами. Не добавляются в базу данных никакой записи. Как активизировать роут auth.social.callback?
Ответы (1 шт):
Я не знаю как в русском VK. Но за Google скажу вам уверенно.
Там все просто, в целях безопасности вы не можете в передаваемых параметрах указать куда будет редирект.
Это делается при создании app google
в форме Create Client OAuth ID там есть поле Authorized Redirect URi
Это непосредственно роут куда вас будет редиректить

Вот ссылка для ознакомления на русском языке.
Надеюсь я ответил на ваш вопрос.