Rumah > Artikel > rangka kerja php > Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Socialite untuk melaksanakan log masuk Github?
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.
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:
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
Memasang Laravel Socialite boleh dilakukan dengan mudah melalui Komposer. Hanya masukkan arahan berikut dalam baris arahan dalam direktori projek:
composer require laravel/socialite
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, ],
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'), ],
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.
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.
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
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!