首頁 > php框架 > Laravel > 主體

Laravel開發:如何使用Laravel Socialite實現Github登入?

PHPz
發布: 2023-06-13 14:46:48
原創
946 人瀏覽過

在當今網路時代,使用者的登入已經成為了絕大部分網頁應用程式必須考慮的事情。這也意味著Web應用程式需要提供使用者可選擇的多重登入方式,來降低使用者的登入困難度和優化使用者體驗。

作為目前最受歡迎的PHP框架之一,Laravel提供了一些非常方便的方式來實現用戶的身份驗證,其中Laravel Socialite是一個非常強大的用戶身份驗證解決方案,它允許應用程式使用第三方平台作為身分驗證提供者。

在本文中,我們將介紹如何使用Laravel Socialite來實現Github登入的功能。下面我們就來逐步實現這個目標。

步驟1:建立Github應用程式

在開始本文之前,首先需要註冊並建立Github帳號,並且在Github中建立一個OAuth應用程式。建立應用程式的過程相對簡單,只需遵循以下步驟:

  1. 登陸Github帳號,在Github Settings -> Developer settings -> OAuth Apps頁面中建立新的OAuth App
  2. 在第一部分填入App名稱、Homepage URL和Callback URL

    Callback URL 即登陸成功後回傳的Website位址,需要在Laravel網站後台定義

  3. #提交表單後回傳的頁面中會顯示Github應用程式的client_id和client_secret。 client_id 將用於設定Laravel Socialite的Github驅動程式。

步驟2:安裝 Laravel Socialite

安裝 Laravel Socialite 可以透過Composer輕鬆完成。只需在專案目錄下的命令列中輸入以下指令:

composer require laravel/socialite
登入後複製

步驟3:設定服務提供者和Facade 引用

#開啟config/app.php 設定文件,找到providers陣列和aliases 數組,將Socialite 服務提供者和Facade 引用新增至對應的陣列。

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

    LaravelSocialiteSocialiteServiceProvider::class,
],

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

    'Socialite' => LaravelSocialiteFacadesSocialite::class,
],
登入後複製

步驟4:定義Github驅動程式設定

在config/services.php 設定檔中新增以下設定:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => env('GITHUB_REDIRECT'),
],
登入後複製

步驟5:定義Github登入連結

開啟登入頁面的blade 範本文件,新增以下程式碼:

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

這將建立一個鏈接,透過造訪/auth/github,將會跳到Github的登入頁面。

步驟6:定義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保存在資料庫中以便需要時進行登入驗證,同時也保存了使用者暱稱和頭像方便展示。

步驟7:建立.env檔案

開啟專案根目錄下的.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-hereyour-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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板