在當(dāng)今互聯(lián)網(wǎng)時代,用戶的登錄已經(jīng)成為了絕大部分Web應(yīng)用必須要考慮的事情。這也意味著Web應(yīng)用需要為用戶提供可選擇的多重登錄方式,來降低用戶的登錄困難度和優(yōu)化用戶體驗。
作為當(dāng)前最受歡迎的PHP框架之一,Laravel提供了一些非常方便的方式來實現(xiàn)用戶的身份驗證,其中Laravel Socialite是一個非常強(qiáng)大的用戶身份驗證解決方案,它允許應(yīng)用使用第三方平臺作為身份驗證提供者。
在本文中,我們將介紹如何使用Laravel Socialite來實現(xiàn)Github登錄的功能。下面我們來逐步實現(xiàn)這個目標(biāo)。
步驟1:創(chuàng)建Github應(yīng)用
在開始本文之前,首先需要注冊和創(chuàng)建一個Github賬號,并且在Github中創(chuàng)建一個OAuth應(yīng)用程序。創(chuàng)建應(yīng)用的過程相對簡單,只需遵循以下幾個步驟:
- 登陸Github賬號,在 Github Settings -> Developer settings -> OAuth Apps頁面中創(chuàng)建新的OAuth App
在第一部分填寫App名稱、Homepage URL和Callback URL
Callback URL 即登陸成功后返回的Website地址,需要在Laravel網(wǎng)站后臺定義
提交表單后返回的頁面中會顯示Github應(yīng)用程序的client_id和client_secret。client_id 將用于配置Laravel Socialite的Github驅(qū)動程序。
步驟2:安裝 Laravel Socialite
安裝 Laravel Socialite 可以通過Composer輕松完成。只需在項目目錄下的命令行中輸入以下指令即可:
composer require laravel/socialite
登錄后復(fù)制
步驟3:配置服務(wù)提供者和 Facade 引用
打開 config/app.php 配置文件,找到 providers 數(shù)組和 aliases 數(shù)組,將 Socialite 服務(wù)提供者和 Facade 引用添加到對應(yīng)的數(shù)組中。
'providers' => [ // Other service providers... LaravelSocialiteSocialiteServiceProvider::class, ], 'aliases' => [ // Other aliases... 'Socialite' => LaravelSocialiteFacadesSocialite::class, ],
登錄后復(fù)制
步驟4:定義Github驅(qū)動配置
在 config/services.php 配置文件中添加以下配置:
'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => env('GITHUB_REDIRECT'), ],
登錄后復(fù)制
步驟5:定義Github登錄鏈接
打開登錄頁面的 blade 模板文件,添加以下代碼:
<a href="{{ url('auth/github') }}" class="btn btn-github"><i class="fa fa-github"></i> Github 登錄</a>
登錄后復(fù)制
這將創(chuàng)建一個鏈接,通過訪問 /auth/github,將會跳轉(zhuǎn)到Github的登錄頁面。
步驟6:定義Github回調(diào)函數(shù)
打開我們在Github中注冊時的 Callback URL 頁面并獲取鏈接中的code參數(shù),并在Laravel路由中添加以下代碼:
Route::get('auth/github/callback', function () { $user = Socialite::driver('github')->user(); // 如果在本地沒有找到該用戶,則創(chuàng)建新用戶 $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'); });
登錄后復(fù)制
這里需要注意的是,我們需要將github_id保存在數(shù)據(jù)庫中以便需要時進(jìn)行登錄驗證,同時也保存了用戶昵稱和頭像方便展示。
步驟7:創(chuàng)建.env文件
打開項目根目錄下的 .env 文件,添加以下 Github 相關(guān)配置:
GITHUB_CLIENT_ID=your-github-client-id-here GITHUB_CLIENT_SECRET=your-github-client-secret-here GITHUB_REDIRECT=http://localhost:8000/auth/github/callback
登錄后復(fù)制
上述配置中,你需要將 your-github-client-id-here
和 your-github-client-secret-here
替換為你自己在Github獲取到的client_id和client_secret。GITHUB_REDIRECT的值應(yīng)該是Github上注冊應(yīng)用程序時的重定向URI參數(shù)。
好了,現(xiàn)在你可以嘗試用 Github 登錄來測試你的應(yīng)用程序了。當(dāng)你訪問 /auth/github 時,你應(yīng)該被重定向到 Github 的登錄頁面。輸入你的 Github 賬號后,你應(yīng)該會被重定向回到你通過 Callback URI 指定的地址。
使用 Laravel Socialite 確實是實現(xiàn)身份驗證的一種快速、簡便的方法,它還支持其他很多賬號認(rèn)證服務(wù)提供商,如Facebook、Twitter、Google等等。舒適且高效的第三方登錄方式能夠極大地提升用戶的體驗,為Web應(yīng)用添加多重登錄方式也逐漸成為了一種必要。相比起自己獨立實現(xiàn)一套認(rèn)證系統(tǒng),使用 Laravel Socialite 則可以利用現(xiàn)有的優(yōu)秀的認(rèn)證服務(wù)提供商來簡化身份驗證方案的實現(xiàn)。
以上就是Laravel開發(fā):如何使用Laravel Socialite實現(xiàn)Github登錄?的詳細(xì)內(nèi)容,更多請關(guān)注www.xfxf.net其它相關(guān)文章!