2016-07-09 3 views
1

Я точно следую документации.Laravel Socialite с Facebook не регистрирующийся

https://github.com/laravel/socialite и https://laravel.com/docs/5.1/authentication#social-authentication

Я создал мое приложение на Facebook и получил все работает. Когда я нажимаю кнопку входа в систему с помощью кнопки Facebook, она авторизует приложение и возвращает меня на мой сайт. Однако, он не показывает мне, что вошел в систему. Если я вместо dd() вместо перенаправления, я получаю все данные из своей учетной записи Facebook. Но страницы, которые видны только для входа в систему, не отображаются.

Вот мой контроллер:

public function redirectToProvider() 
{ 
    return Socialite::driver('facebook')->redirect(); 
} 

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

    return redirect('my-profile') 
      ->with('message', 'You have signed in with Facebook.'); 
} 

Вот мои маршруты:

Route::get('login/facebook', 'Auth\[email protected]'); 
Route::get('login/facebook/callback', 'Auth\[email protected]'); 

Светская правильно установлен в composer.json. Классы находятся в config/app.php, а идентификаторы моего приложения FB находятся в config/services.php.

Любые идеи относительно того, почему он не работает?

ответ

2

В методе handleProviderCallback необходимо создать и аутентифицировать пользователя, который был возвращен драйвером.

Создать пользователя, если не существует:

$userModel = User::firstOrNew(['email' => $user->getEmail()]); 
if (!$userModel->id) { 
    $userModel->fill([.....]); 
    $userModel->save(); 
} 

Затем аутентификации пользователя:

Auth::login($userModel); 

Ваш метод будет выглядеть следующим образом:

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

    $userModel = User::firstOrNew(['email' => $user->getEmail()]); 
    if (!$userModel->id) { 
     $userModel->fill([.....]);//Fill the user model with your data 
     $userModel->save(); 
    } 

    Auth::login($userModel); 

    return redirect('my-profile') 
      ->with('message', 'You have signed in with Facebook.'); 
} 
Смежные вопросы