簡體   English   中英

laravel 5.3用facebook登錄

[英]laravel 5.3 login with facebook

我在laravel 5.3項目中實現了用facebook登錄。 當我從facebook用戶獲取所有記錄到數據庫的數據時,它似乎可以正常工作,但是我的項目將身份驗證狀態記錄為未記錄。 此外,它不會將我重定向到儀表板,而是顯示帶有回調鏈接的白頁。 為什么?

它將用戶重定向到fagebook頁面進行登錄

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()-> login似乎不起作用,並且也重定向了。 可能是什么問題? 謝謝!

路線:

Route::get('dashboard', ['as' => 'dashboard', 'uses' => 'PageController@getDashboard']);

Route::get('auth/facebook', 'Auth\RegisterController@redirectToProvider');
Route::get('auth/facebook/callback', 'Auth\RegisterController@handleProviderCallback');

對於您編寫回調處理程序的方式,此行為似乎是正確的。 我相信您要發生的事情是,如果該用戶存在,那么您想登錄他們,如果該用戶存在,則當前代碼無效,因此您需要確保該用戶是否存在,並且已經登錄。

我將代碼更改如下:

$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');
}

這樣,如果有用戶,他們仍然會登錄,而不是處理程序不執行任何操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM