首页 > 后端开发 > php教程 > 如何在 Laravel 中实现'使用 Facebook 登录”

如何在 Laravel 中实现'使用 Facebook 登录”

王林
发布: 2024-08-16 06:54:42
原创
876 人浏览过

How to Implement

本教程将指导您完成向 Laravel 应用程序添加 Facebook 登录功能的过程。

先决条件

  • Laravel 项目建立
  • 已安装作曲家
  • Facebook 开发者帐户

第 1 步:创建 Facebook 应用程序

  1. 前往 Facebook 开发者
  2. 点击“我的应用程序”,然后“创建应用程序”
  3. 选择“消费者”作为应用类型
  4. 填写应用详细信息并创建应用
  5. 在应用程序仪表板中,记下您的应用程序 ID 和应用程序密钥

第 2 步:安装 Laravel Socialite

Laravel Socialite 为 Facebook、Twitter、Google、LinkedIn、GitHub、GitLab 和 Bitbucket 的 OAuth 身份验证提供了富有表现力、流畅的界面。
通过 Composer 安装:

composer require laravel/socialite
登录后复制

第 3 步:配置社交名流

将以下内容添加到您的 config/services.php 文件中:

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => env('FACEBOOK_REDIRECT_URI'),
],
登录后复制

然后,将这些添加到您的 .env 文件中:

FACEBOOK_CLIENT_ID=your_facebook_app_id
FACEBOOK_CLIENT_SECRET=your_facebook_app_secret
FACEBOOK_REDIRECT_URI=http://localhost:8000/login/facebook/callback
登录后复制

第 4 步:设置路线

将这些路由添加到您的routes/web.php:

use App\Http\Controllers\Auth\FacebookController;

Route::get('login/facebook', [FacebookController::class, 'redirectToFacebook'])->name('login.facebook');
Route::get('login/facebook/callback', [FacebookController::class, 'handleFacebookCallback']);
登录后复制

第5步:创建FacebookController

创建一个新控制器:

php artisan make:controller Auth/FacebookController
登录后复制

实现控制器:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;

class FacebookController extends Controller
{
    public function redirectToFacebook()
    {
        return Socialite::driver('facebook')->redirect();
    }

    public function handleFacebookCallback()
    {
        try {
            $user = Socialite::driver('facebook')->user();
            $finduser = User::where('facebook_id', $user->id)->first();

            if ($finduser) {
                Auth::login($finduser);
                return redirect()->intended('dashboard');
            } else {
                $newUser = User::create([
                    'name' => $user->name,
                    'email' => $user->email,
                    'facebook_id'=> $user->id,
                    'password' => encrypt('123456dummy')
                ]);

                Auth::login($newUser);
                return redirect()->intended('dashboard');
            }
        } catch (\Exception $e) {
            dd($e->getMessage());
        }
    }
}
登录后复制

第 6 步:更新用户模型

将 facebook_id 添加到用户模型中的可填充数组中:

protected $fillable = [
    'name',
    'email',
    'password',
    'facebook_id',
];
登录后复制

第 7 步:将 Facebook ID 添加到用户表中

创建新迁移:

php artisan make:migration add_facebook_id_to_users_table
登录后复制

在新的迁移文件中:

public function up()
{
    Schema::table('users', function ($table) {
        $table->string('facebook_id')->nullable();
    });
}

public function down()
{
    Schema::table('users', function ($table) {
        $table->dropColumn('facebook_id');
    });
}
登录后复制

运行迁移:

php artisan migrate
登录后复制

第8步:添加登录按钮

在您的登录视图中,添加“使用 Facebook 登录”按钮:

<a href="{{ route('login.facebook') }}" class="btn btn-primary">
    Login with Facebook
</a>
登录后复制

以上是如何在 Laravel 中实现'使用 Facebook 登录”的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板