Авторизация через соцсети в 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 шт):

Автор решения: mydls1

Я не знаю как в русском VK. Но за Google скажу вам уверенно. Там все просто, в целях безопасности вы не можете в передаваемых параметрах указать куда будет редирект. Это делается при создании app google в форме Create Client OAuth ID там есть поле Authorized Redirect URi Это непосредственно роут куда вас будет редиректить введите сюда описание изображения

Вот ссылка для ознакомления на русском языке.

Надеюсь я ответил на ваш вопрос.

→ Ссылка