Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Melaksanakan \"Log Masuk dengan Facebook\" dalam Laravel

Cara Melaksanakan \"Log Masuk dengan Facebook\" dalam Laravel

王林
王林asal
2024-08-16 06:54:42824semak imbas

How to Implement

Tutorial ini akan membimbing anda melalui proses menambah fungsi log masuk Facebook pada aplikasi Laravel anda.

Prasyarat

  • Projek Laravel disediakan
  • Komposer dipasang
  • Akaun Pembangun Facebook

Langkah 1: Buat Apl Facebook

  1. Pergi ke Pembangun Facebook
  2. Klik pada "Apl Saya" dan kemudian "Buat Apl"
  3. Pilih "Pengguna" sebagai jenis apl
  4. Isi butiran apl dan buat apl
  5. Dalam papan pemuka apl, catatkan ID Apl dan Rahsia Apl anda

Langkah 2: Pasang Laravel Socialite

Laravel Socialite menyediakan antara muka yang ekspresif dan lancar untuk pengesahan OAuth dengan Facebook, Twitter, Google, LinkedIn, GitHub, GitLab dan Bitbucket.
Pasang melalui Komposer:

composer require laravel/socialite

Langkah 3: Konfigurasikan Socialite

Tambah yang berikut pada fail config/services.php anda:

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => env('FACEBOOK_REDIRECT_URI'),
],

Kemudian, tambahkan ini pada fail .env anda:

FACEBOOK_CLIENT_ID=your_facebook_app_id
FACEBOOK_CLIENT_SECRET=your_facebook_app_secret
FACEBOOK_REDIRECT_URI=http://localhost:8000/login/facebook/callback

Langkah 4: Sediakan Laluan

Tambahkan laluan ini pada laluan/web.php anda:

use App\Http\Controllers\Auth\FacebookController;

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

Langkah 5: Buat FacebookController

Buat pengawal baharu:

php artisan make:controller Auth/FacebookController

Laksanakan pengawal:

<?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());
        }
    }
}

Langkah 6: Kemas kini Model Pengguna

Tambah facebook_id pada tatasusunan boleh diisi dalam model Pengguna anda:

protected $fillable = [
    'name',
    'email',
    'password',
    'facebook_id',
];

Langkah 7: Tambahkan ID Facebook pada Jadual Pengguna

Buat migrasi baharu:

php artisan make:migration add_facebook_id_to_users_table

Dalam fail pemindahan baharu:

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');
    });
}

Jalankan migrasi:

php artisan migrate

Langkah 8: Tambah Butang Log Masuk

Dalam paparan log masuk anda, tambahkan butang "Log Masuk dengan Facebook":

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

Atas ialah kandungan terperinci Cara Melaksanakan \"Log Masuk dengan Facebook\" dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn