无法在Laravel 5.1中通过Facebook登录

时间:2015-10-05 10:07:24

标签: facebook laravel authentication

我正在尝试使用Laravel 5.1登录facebook。

我正在关注laravel文档中提到的每个步骤。 http://laravel.com/docs/5.1/authentication#social-authentication

但是,当我通过Facebook登录时,它将重定向到我的正常登录页面。 在排序会话中存储在Facebook登录。

这是我编写的代码。

Router.php

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

AuthController.php

public function redirectToProvider()
{
    return  Socialite::driver('facebook')
            ->scopes(['email', 'public_profile'])
            ->redirect();
}

public function handleProviderCallback()
{
    $user = Socialite::driver('github')->user();
    $user = Socialite::driver('github')->user();
    // OAuth Two Providers
    $token = $user->token;
    // OAuth One Providers
    $token = $user->token;
    $tokenSecret = $user->tokenSecret;
    // All Providers
    $user->getId();
    $user->getNickname();
    $user->getName();
    $user->getEmail();
    $user->getAvatar();
}

Services.php

 'facebook' => [
    'client_id' => '1625567400000000',
    'client_secret' => 'secret',
    'redirect' => 'http://localhost:8000/',
 ],

当我输入localhost / 8000 / auth / facebook时,它会将我重定向到facebook并获得public_profile,email等的许可。 它将重定向回localhost / auth / login。

当我在URL中输入localhost:8000 / auth / facebook / callback时,会出现这样的错误;

Middleware.php第69行中的ClientException:

客户端错误:404

2 个答案:

答案 0 :(得分:1)

对于您的情况,我邀请您使用中间件检查用户是否已登录。这可能是您重定向到localhost/auth/login的问题

我希望以下代码对您有用

public function handleProviderCallback()
{        
    //retrieve user's information from facebook
    $socUser  = Socialite::driver('facebook')->user();

    //check user already exists in db
    $user = \App\User::where('email', $socUser->getEmail())->first();
    if($user) {
        // if exist, log user into your application
        //  and redirect to any path you want
        \Auth::login($user);
        return redirect()->route('user.index');
    }

    //if not exist, create new user, 
    // log user into your application 
    // and resirect to any path you want
    $user = new \App\User ;
    $user->email = $socUser->getEmail();
    // ...
    // ...
    // ...
    $user->save();
    \Auth::login($user); // login user
    return redirect()->route('user.index'); // redirect
}

注意:我没有测试我的代码但你应该知道

了解更多信息:http://laravel.com/docs/5.1/authentication

和@mimo提到,

  

Services.php文件中的重定向网址必须为

     

本地主机:8000 / AUTH /实/回调

答案 1 :(得分:0)

Services.php文件中的重定向网址必须为

localhost:8000/auth/facebook/callback