2017-01-05 11 views
1

私はlaravel 5.3プロジェクトでfacebookでloginを実装しています。私はFacebookのユーザーからデータベースに記録されたすべてのデータを取得するように動作するように見えますが、私のプロジェクトは私の認証状態がログに記録されていないと判断します。また、私はダッシュボードにリダイレクトされませんが、コールバックリンクが付いた白いページが表示されます。どうして?laravel 5.3 facebookでログイン

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

コールバック・ハンドラ

public function handleProviderCallback() 
{ 
    try{ 
     $socialUser = Socialite::driver('facebook')->user(); 
    } 
    catch(\Exception $e) { 
     return redirect('/dashboard'); 
    } 

    $user = User::where('facebook_id', $socialUser->getId())->first(); 
    if(!$user){ 
     User::create([ 
      'facebook_id' => $socialUser->getId(), 
      'name' => $socialUser->getName(), 
      'email' => $socialUser->getEmail(), 
     ]); 

     auth()->login($user); 
     return redirect()->to('/dashboard'); 
    } 
} 

マイAUTH()ログインするfagebookページにユーザーをリダイレクトします。 - >ログインを働き、そしてまたリダイレクトしていないようです。何が問題なのでしょうか?ありがとうございました!

路線:

Route::get('dashboard', ['as' => 'dashboard', 'uses' => '[email protected]']); 

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

をやっていないに記録されます。ユーザーは、あなたがどうかを確認することができ、存在する場合、この方法User :: createは実際にデータベースにユーザーを作成していますか? –

+0

はい!私のprojはfacebookのログインにリダイレクトされ、私はログインし、私は自分のプロジェクト/認証/ facebook /コールバック/トークンにリダイレクトされます –

+0

私は以下の答えを入れました、あなたの現在のコードは何もしません@Andrew T –

答えて

2

行動はあなたがコールバックハンドラをコード化されている方法のために正しいと思われます。私はあなたが何をしたいと思っているのは、ユーザーが存在する場合にログインしたい場合、ユーザーが存在する場合、現在のコードは何もないので、ユーザーがログインしているかどうかを確認する必要があります。

I次のようにコードを変更します

$user = User::where('facebook_id', $socialUser->getId())->first(); 

if(!$user){ 
    User::create([ 
     'facebook_id' => $socialUser->getId(), 
     'name' => $socialUser->getName(), 
     'email' => $socialUser->getEmail(), 
    ]);  
} 

if(Auth::loginUsingId($user->id)){ 
    return redirect()->intended('/dashboard'); 
} 

彼らはまだ私は問題が何であるかのアイデアを持っているというハンドラよりも何も

+0

それについては考えなかった:D今試してみる –

+0

ありがとう!出来た! –

+0

問題はありません –