Laravel框架中借助Socialite包实现Facebook登录的流程步骤
Laravel  /  管理员 发布于 2年前   1694
在这篇文章中,我将解释使用 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 按钮访问登录。
如果您在集成时遇到任何问题,请评论您的问题。
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号