Невозможно динамически изменить redirectUrl при использовании socialite для мульти-аутентификации - PullRequest
0 голосов
/ 25 февраля 2020
  • Версия Socialite: ^ 4.3
  • Laravel Версия: 6
  • PHP Версия: 7.3.8
  • Драйвер базы данных и версия: MySQL

Описание:

Я использую несколько аутентификационных охранников. Для этого у меня есть несколько обратных вызовов для каждого охранника. Но redirectUrl, похоже, не обновляет redirectUrl и продолжает выдавать несоответствие redirect_uri на Facebook и Google.

Шаги для воспроизведения:

  • чистая установка laravel
  • настроить защиту клиента и работника (не используя для этого таблицу пользователей)
  • настроить маршруты следующим образом
    //social account worker sign up/sign in related routes
    Route::get('worker/{provider}', 'Auth\AuthController@redirectToProvider')->middleware('web');
    Route::get('worker/{provider}/callback', 'Auth\AuthController@handleProviderCallback')->name('worker.provider')->middleware('web');

для клиента

    Route::get('customer/{provider}', 'Auth\AuthController@redirectToProvider')->middleware('web');
    Route::get('customer/{provider}/callback', 'Auth\AuthController@handleProviderCallback')->name('customer.provider')->middleware('web');

-установка провайдера id, ключ и URL-адрес клиента по умолчанию: FACEBOOK_URL=http://localhost:8000/api/customer/facebook/callback - добавить конфиги провайдеров в config / services - в методе redirectToProvider заказчика

$redirectUrl = route('customer.provider', ['provider' => $provider]);
            return Socialite::driver($provider)
                ->redirectUrl($redirectUrl)
                ->redirect();

На данный момент все работает нормально Теперь если я запускаю метод redirectToProvider для работника, который выглядит следующим образом:

$redirectUrl = route('worker.provider',['provider' => $provider]);
return Socialite::driver($provider)->redirectUrl($redirectUrl)->redirect();

Он выдает "Client error: `POST https://graph.facebook.com/v3.3/oauth/access_token` resulted in a `400 Bad Request` response:\n{\"error\":{\"message\":\"Error validating verification code. Please make sure your redirect_uri is identical to the one you (truncated...)\n" для Facebook и почти такую ​​же ошибку для Google. Я попытался переопределить файл env во время выполнения и отправки redirectUrl с помощью "с"

...