Laravel框架中借助Socialite包实现Facebook登录的流程步骤
在这篇文章中,我将解释使用 Facebook 的 Laravel Socialite 身份验证。
按照以下步骤开始。
第1步
使用 composer 安装 Laravel Socialite 包。
composer require laravel/socialite
注意:如果使用低于版本 8 的 Laravel,请在提供程序中包含包。
在 config/app.php 文件中添加以下提供程序
Laravel\Socialite\SocialiteServiceProvider::class,
向下滚动到别名部分并添加以下代码
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
第2步
在 config/services.php 文件中包含 Facebook 服务。
'facebook' => [
'client_id' => '', //USE FROM FACEBOOK DEVELOPER ACCOUNT
'client_secret' => '', //USE FROM FACEBOOK DEVELOPER ACCOUNT
'redirect' => 'https://examplelaravel8.test/facebook/callback/'
],
第 3 步
在这里,您必须创建 Facebook 应用程序,以便您可以从 Facebook 获取 client_id 和 client_secret。
你可以通过访问 Facebook 的开发者 URL 来做到这一点
并使用您的 Facebook 帐户登录。
转到我的应用程序,继续添加新应用程序
第四步
创建一个新的控制器来处理社交活动。运行下面的命令来生成一个新的控制器
php artisan make:controller FaceBookController
使用下面的代码更新 FacebookController,其中有 2 个函数来重定向和处理回调。
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Laravel\Socialite\Facades\Socialite;
class FaceBookController extends Controller
{
/**
* Login Using Facebook
*/
public function loginUsingFacebook()
{
return Socialite::driver('facebook')->redirect();
}
public function callbackFromFacebook()
{
try {
$user = Socialite::driver('facebook')->user();
$saveUser = User::updateOrCreate([
'facebook_id' => $user->getId(),
],[
'name' => $user->getName(),
'email' => $user->getEmail(),
'password' => Hash::make($user->getName().'@'.$user->getId())
]);
Auth::loginUsingId($saveUser->id);
return redirect()->route('home');
} catch (\Throwable $th) {
throw $th;
}
}
}
第 5 步
添加 Facebook 身份验证路由
// 脸书登录网址
Route::prefix('facebook')->name('facebook.')->group(function(){
Route::get('auth', [FaceBookController::class, 'loginUsingFacebook'])->name('login');
Route::get('callback', [FaceBookController::class, 'callbackFromFacebook'])->name('callback');
});
第 6 步
在登录页面上添加 Facebook 按钮 resources/views/auth/login.blade.php
<a href="{{ route('facebook.login') }}" class="btn btn-facebook btn-user btn-block">
<i class="fab fa-facebook-f fa-fw"></i>
//使用脸书登入
</a>
第 7 步
在用户表中添加 facebook_id 列,在下面创建一个迁移命令
php artisan make:migration add_facebook_id_in_users_table
在迁移文件中添加以下代码
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('facebook_id')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('facebook_id');
});
}
并运行迁移
php artisan migrate
第 8 步
更新 Models/User.php 中的用户模型可填充属性
protected $fillable = [
'name',
'email',
'password',
'status',
'facebook_id'
];
最后转到登录页面并尝试使用 Facebook 按钮访问登录。

如果您在集成时遇到任何问题,请评论您的问题。
相关文章