Laravel Socialite продолжает перенаправлять меня домой

Я пытаюсь настроить вход в Linkedin и Google для своего веб-сайта Laravel 5 / Angular 2 с помощью пакета Laravel socialite.

Провайдер социальной сети и псевдоним правильно вставлены в config/app.php файл

Вот код, который я вставил в config/services.php файл

'linkedin' => [
    'client_id' => '[hidden-linkedin-client-id]',
    'client_secret' => '[hidden-linkedin-client-secret]',
    'redirect' => 'http://localhost:8888/profile',
],

'google' => [
    'client_id' => '[hidden-google-client-id]',
    'client_secret' => '[hidden-google-client-secret]',
    'redirect' => 'http://localhost:8888/profile',
],

Вот созданные мной маршруты ...

Route::get('/auth/{provider}', 'Auth\AuthController@redirectToProvider');
Route::get('/auth/{provider}/callback', 'Auth\AuthController@handleProviderCallback');

... и связанные функции в Http/Controllers/Auth/AuthController.php

public function redirectToProvider($provider)
{
    Log::info('redirecting');
    return Socialite::driver($provider)->redirect();
}

public function handleProviderCallback($provider)
{
    $user = Socialite::driver($provider)->user();

    return $user->token;
}

Затем, когда я перехожу к http://localhost:8888/auth/github или http://localhost:8888/auth/linkedin он продолжает перенаправлять меня на http://localhost:8888 без журнала. Где я ошибся?


person Emmanuel Scarabin    schedule 28.07.2016    source источник
comment
вы пытались вставить что-то dd("here..") в redirectToProvider функцию?   -  person Kalhan.Toress    schedule 28.07.2016
comment
@ K.Toress спасибо за помощь. Просто попробовал с Log::info('redirecting'), и действительно, я не вижу никаких журналов. Что тут может быть не так?   -  person Emmanuel Scarabin    schedule 28.07.2016
comment
Умм, тогда перенаправление происходит до того, как попадет в функцию контроллера, можете ли опубликовать свой файл routes.php, если он не очень большой?   -  person Kalhan.Toress    schedule 28.07.2016
comment
@ K.Toress на самом деле довольно большой (около 100 маршрутов). Остальные маршруты работают отлично. Маршруты, которые я использую для Socialite, перечислены в моем вопросе. Я попытался вставить их вверху и внизу файла - ›тот же результат   -  person Emmanuel Scarabin    schedule 28.07.2016
comment
у вас есть другие маршруты с /auth или вы используете middlewares, route groups для этих двух маршрутов?   -  person Kalhan.Toress    schedule 28.07.2016


Ответы (2)


Обновите конфигурации для социального перенаправления, проверьте ниже: -

'linkedin' => [
    'client_id' => '[hidden-linkedin-client-id]',
    'client_secret' => '[hidden-linkedin-client-secret]',
    'redirect' => 'http://localhost:8888/auth/linkdin/callback',
],

'google' => [
    'client_id' => '[hidden-google-client-id]',
    'client_secret' => '[hidden-google-client-secret]',
    'redirect' => 'http://localhost:8888/auth/google/callback',
],

и функция перенаправления должна быть такой: -

public function redirectToProvider(){
  try{
    Log::info('redirecting');
    return Socialite::driver(\Request::segment(2))->redirect();
  }catch(\Exception $e){
    Log::info('Exception in redirect');
  }
}
person Rakesh Kumar    schedule 28.07.2016

Большое спасибо за вашу помощь, но ни один из ваших ответов не сработал, поскольку функция redirectToProvider() не вызывается.

Поэтому я сохранил свой исходный код и, наконец, заставил его работать, прокомментировав эти строки в промежуточном программном обеспечении Middleware/RedirectIfAuthenticated.php:

public function handle($request, Closure $next, $guard = null)
    {
        /* 
            if (Auth::guard($guard)->check()) {
                return redirect('/');
            }
        */
        return $next($request);
    }

Это явно обходной путь, но это лучшее решение, которое я когда-либо нашел.

person Emmanuel Scarabin    schedule 28.07.2016