在當今網路時代,使用者的登入已經成為了絕大部分網頁應用程式必須考慮的事情。這也意味著Web應用程式需要提供使用者可選擇的多重登入方式,來降低使用者的登入困難度和優化使用者體驗。
作為目前最受歡迎的PHP框架之一,Laravel提供了一些非常方便的方式來實現用戶的身份驗證,其中Laravel Socialite是一個非常強大的用戶身份驗證解決方案,它允許應用程式使用第三方平台作為身分驗證提供者。
在本文中,我們將介紹如何使用Laravel Socialite來實現Github登入的功能。下面我們就來逐步實現這個目標。
在開始本文之前,首先需要註冊並建立Github帳號,並且在Github中建立一個OAuth應用程式。建立應用程式的過程相對簡單,只需遵循以下步驟:
在第一部分填入App名稱、Homepage URL和Callback URL
Callback URL 即登陸成功後回傳的Website位址,需要在Laravel網站後台定義
安裝 Laravel Socialite 可以透過Composer輕鬆完成。只需在專案目錄下的命令列中輸入以下指令:
composer require laravel/socialite
#開啟config/app.php 設定文件,找到providers陣列和aliases 數組,將Socialite 服務提供者和Facade 引用新增至對應的陣列。
'providers' => [ // Other service providers... LaravelSocialiteSocialiteServiceProvider::class, ], 'aliases' => [ // Other aliases... 'Socialite' => LaravelSocialiteFacadesSocialite::class, ],
在config/services.php 設定檔中新增以下設定:
'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => env('GITHUB_REDIRECT'), ],
開啟登入頁面的blade 範本文件,新增以下程式碼:
<a href="{{ url('auth/github') }}" class="btn btn-github"><i class="fa fa-github"></i> Github 登录</a>
這將建立一個鏈接,透過造訪/auth/github,將會跳到Github的登入頁面。
開啟我們在Github中註冊時的Callback URL 頁面並取得連結中的code參數,並在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'); });
這裡要注意的是,我們需要將github_id保存在資料庫中以便需要時進行登入驗證,同時也保存了使用者暱稱和頭像方便展示。
開啟專案根目錄下的.env 文件,新增以下Github 相關設定:
GITHUB_CLIENT_ID=your-github-client-id-here GITHUB_CLIENT_SECRET=your-github-client-secret-here GITHUB_REDIRECT=http://localhost:8000/auth/github/callback
上述設定中,你需要將your-github-client-id-here
和your-github-client-secret-here
被你自己在Github取得到的client_id和client_secret。 GITHUB_REDIRECT的值應該是Github上註冊應用程式時的重定向URI參數。
好了,現在你可以嘗試用 Github 登入來測試你的應用程式了。當你造訪 /auth/github 時,你應該會被重新導向到 Github 的登入頁面。輸入你的 Github 帳號後,你應該會被重新導向回到你透過 Callback URI 指定的位址。
使用 Laravel Socialite 確實是實現身份驗證的一種快速、簡單的方法,它還支援其他許多帳號認證服務供應商,如Facebook、Twitter、Google等等。舒適且有效率的第三方登入方式能夠大幅提升使用者的體驗,為網路應用程式增加多重登入方式也逐漸成為了必要。相較於自己獨立實現一套認證系統,使用 Laravel Socialite 則可以利用現有的優秀的認證服務提供者來簡化身分驗證方案的實作。
以上是Laravel開發:如何使用Laravel Socialite實現Github登入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!