首页 > 解决方案 > Laravel 5.6 与社交名流登录 facebook

问题描述

我尝试使用社交名流使用 facebook 登录。我在developers.facebook.com 上注册并获得了我的APP_ID 和Secret_code,并在我的.env 文件和config/services.php 中实现了它。但是当我输入我的用户名和密码 facebook 后,它无法将我引导到主页。我使用了来自 laravel 的身份验证脚手架

错误

无法访问此网站

登录控制器.php

<?php

 namespace App\Http\Controllers\Auth;
 use App\User;
 use Socialite;
 use Auth;
 use App\Http\Controllers\Controller;
 use Illuminate\Foundation\Auth\AuthenticatesUsers;


 class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/

use AuthenticatesUsers;

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = '/home';

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('guest')->except('logout');
}

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

/**
 * Obtain the user information from provider.  Check if the user already exists in our
 * database by looking up their provider_id in the database.
 * If the user exists, log them in. Otherwise, create a new user then log them in. After that
 * redirect them to the authenticated users homepage.
 *
 * @return Response
 */
public function handleProviderCallback($provider)
{
    $user = Socialite::driver($provider)->user();
    $authUser = $this->findOrCreateUser($user, $provider);
    Auth::login($authUser, true);
    return redirect($this->redirectTo);
}

/**
 * If a user has registered before using social auth, return the user
 * else, create a new user object.
 * @param  $user Socialite user object
 * @param $provider Social auth provider
 * @return  User
 */
public function findOrCreateUser($user, $provider)
{
    $authUser = User::where('provider_id', $user->id)->first();
    if ($authUser) {
        return $authUser;
    }
    return User::create([
        'name'     => $user->name,
        'email'    => $user->email,
        'provider' => $provider,
        'provider_id' => $user->id
    ]);
}
  }

.env

FB_ID=321**14684*****
FB_SECRET=40fb4782*****5b7b88391f4599f18c7
FB_URL=https://localhost:8000/auth/facebook/callback

网页.php

Route::get('/', function () {
return view('homepage');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::get('auth/{provider}', 'Auth\LoginController@redirectToProvider');
Route::get('auth/{provider}/callback', 
'Auth\LoginController@handleProviderCallback');

**App\User.php**
<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

 class User extends Authenticatable
 {
use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password','provider','provider_id'
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];
 }

配置/服务.php

        'facebook' => [
        'client_id'     => env('FB_ID'),
        'client_secret' => env('FB_SECRET'),
        'redirect'      => env('FB_URL'),
        ],

请给我一些建议来解决这个问题。我很抱歉我的英语不好。谢谢你。

标签: phplaravelfacebooklaravel-5.6laravel-socialite

解决方案


推荐阅读