Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Socialite untuk melaksanakan log masuk Github?

Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Socialite untuk melaksanakan log masuk Github?

PHPz
PHPzasal
2023-06-13 14:46:48926semak imbas

Dalam era Internet hari ini, log masuk pengguna telah menjadi sesuatu yang mesti dipertimbangkan oleh kebanyakan aplikasi web. Ini juga bermakna bahawa aplikasi web perlu menyediakan pengguna dengan kaedah log masuk berbilang pilihan untuk mengurangkan kesukaran log masuk pengguna dan mengoptimumkan pengalaman pengguna.

Sebagai salah satu rangka kerja PHP paling popular pada masa ini, Laravel menyediakan beberapa cara yang sangat mudah untuk melaksanakan pengesahan pengguna, antaranya Laravel Socialite ialah penyelesaian pengesahan pengguna yang sangat berkuasa yang membolehkan aplikasi menggunakan platform pihak ketiga bertindak sebagai pengesahan pembekal.

Dalam artikel ini, kami akan memperkenalkan cara menggunakan Laravel Socialite untuk melaksanakan fungsi log masuk Github. Mari kita ambil pendekatan langkah demi langkah untuk mencapai matlamat ini.

Langkah 1: Buat aplikasi Github

Sebelum memulakan artikel ini, anda perlu mendaftar dan mencipta akaun Github terlebih dahulu dan mencipta aplikasi OAuth dalam Github. Proses mencipta aplikasi agak mudah, cuma ikuti langkah berikut:

  1. Log masuk ke akaun Github anda dan buat Apl OAuth baharu dalam Tetapan Github -> Halaman Apl
  2. Isikan nama Apl, URL Halaman Utama dan URL Panggilan Balik di bahagian pertama

    URL Panggilan Balik ialah alamat tapak web yang dikembalikan selepas log masuk berjaya, yang perlu ditakrifkan dalam Bahagian belakang laman web Laravel

  3. client_id dan client_secret aplikasi Github akan dipaparkan dalam halaman yang dikembalikan selepas menyerahkan borang. client_id akan digunakan untuk mengkonfigurasi pemacu Github Laravel Socialite.

Langkah 2: Pasang Laravel Socialite

Memasang Laravel Socialite boleh dilakukan dengan mudah melalui Komposer. Hanya masukkan arahan berikut dalam baris arahan dalam direktori projek:

composer require laravel/socialite

Langkah 3: Konfigurasikan pembekal perkhidmatan dan rujukan Fasad

Buka fail konfigurasi config/app.php dan cari penyedia Tatasusunan dan tatasusunan alias, tambahkan pembekal perkhidmatan Socialite dan rujukan Fasad kepada tatasusunan yang sepadan.

'providers' => [
    // Other service providers...

    LaravelSocialiteSocialiteServiceProvider::class,
],

'aliases' => [
    // Other aliases...

    'Socialite' => LaravelSocialiteFacadesSocialite::class,
],

Langkah 4: Tentukan konfigurasi pemacu Github

Tambah konfigurasi berikut dalam fail konfigurasi config/services.php:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => env('GITHUB_REDIRECT'),
],

Langkah 5: Tentukan pautan log masuk Github

Buka fail templat bilah halaman log masuk dan tambah kod berikut:

<a href="{{ url('auth/github') }}" class="btn btn-github"><i class="fa fa-github"></i> Github 登录</a>

Ini akan mencipta pautan yang akan melompat ke halaman log masuk Github dengan mengakses /auth/github.

Langkah 6: Tentukan fungsi panggil balik Github

Buka halaman URL Panggilan Balik apabila kami mendaftar dalam Github dan dapatkan parameter kod dalam pautan, dan tambah kod berikut dalam laluan Laravel:

Route::get('auth/github/callback', function () {
    $user = Socialite::driver('github')->user();

    // 如果在本地没有找到该用户,则创建新用户
    $existingUser = User::where('email', $user->getEmail())->first();
    if ($existingUser) {
        auth()->login($existingUser, true);
    } else {
        $newUser                  = new User;
        $newUser->name            = $user->getNickname();
        $newUser->email           = $user->getEmail();
        $newUser->github_id       = $user->getId();
        $newUser->avatar          = $user->getAvatar();
        $newUser->provider        = 'github';
        $newUser->save();
        auth()->login($newUser, true);
    }

    return redirect()->to('/home');
});

Apa yang perlu diperhatikan di sini ialah kita perlu menyimpan github_id dalam pangkalan data untuk pengesahan log masuk apabila diperlukan, dan juga menyimpan nama panggilan dan avatar pengguna untuk paparan mudah.

Langkah 7: Buat fail .env

Buka fail .env dalam direktori akar projek dan tambah konfigurasi berkaitan Github berikut:

GITHUB_CLIENT_ID=your-github-client-id-here
GITHUB_CLIENT_SECRET=your-github-client-secret-here
GITHUB_REDIRECT=http://localhost:8000/auth/github/callback

Dalam konfigurasi di atas, anda perlu dan your-github-client-id-here dengan client_id dan client_secret yang anda perolehi daripada Github. Nilai GITHUB_REDIRECT hendaklah menjadi parameter URI ubah hala semasa mendaftarkan aplikasi pada Github. your-github-client-secret-here

Baiklah, sekarang anda boleh cuba log masuk dengan Github untuk menguji aplikasi anda. Apabila anda melawat /auth/github, anda harus dialihkan ke halaman log masuk Github. Selepas memasukkan akaun Github anda, anda harus dialihkan semula ke alamat yang anda tentukan melalui URI Panggilan Balik.

Menggunakan Laravel Socialite sememangnya cara yang cepat dan mudah untuk melaksanakan pengesahan Ia juga menyokong banyak penyedia perkhidmatan pengesahan akaun lain, seperti Facebook, Twitter, Google, dll. Kaedah log masuk pihak ketiga yang selesa dan cekap boleh meningkatkan pengalaman pengguna dengan banyak, dan menambahkan berbilang kaedah log masuk ke aplikasi web secara beransur-ansur menjadi satu keperluan. Berbanding dengan melaksanakan sistem pengesahan secara bebas, menggunakan Laravel Socialite boleh menggunakan penyedia perkhidmatan pengesahan cemerlang sedia ada untuk memudahkan pelaksanaan penyelesaian pengesahan identiti.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Socialite untuk melaksanakan log masuk Github?. 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