搜尋
首頁php框架LaravelLaravel開發:如何使用Laravel Socialite和Google實現第三方登入?

Laravel開發:如何使用Laravel Socialite和Google實現第三方登入?

在現代的網路應用程式中,使用者的登入和認證是必不可少的。傳統的基於使用者名稱和密碼的身份驗證方式已經無法滿足其安全性和便利性的要求。第三方登入解決了這個問題,它允許用戶使用他們在其他平台上已經建立的帳戶來登入您的應用程式。

在這篇文章中,我們將介紹如何使用Laravel Socialite和Google實現第三方登入。

什麼是Laravel Socialite?

Laravel Socialite是Laravel社群中廣泛使用的OAuth認證流程的封裝庫。它允許我們輕鬆地與多個第三方服務(例如Facebook,Twitter,Google等)建立連接。

Google開發平台設定

首先,我們需要在Google開發平台中建立OAuth客戶端 ID。開啟 https://console.developers.google.com/ 並建立一個新專案。在左上角的「Select a Project」下拉式功能表中,按一下「New Project」。

填寫項目名稱和其他項目設定資訊。建立專案後,您會被重新導向到專案的概述頁面。從頂部選單中,選擇“API和服務”>“憑證”。

點選「建立憑證」按鈕,並選擇「OAuth客戶端ID」。

在「應用程式類型」下拉式選單中,選擇「網頁應用程式」。為了實現Laravel Socialite和Google的集成,我們需要填寫「授權 JavaScript來源」和「重定向URI」欄位。

在「授權JavaScript來源」欄位中,輸入您的應用程式的主機名,我們可以本機使用「http://localhost」的URL。在「重定向URI」欄位中,輸入一個回呼URL,用於從Google登入後重新導向回您的應用程式。在這個例子中,我們將使用「http://localhost:8000/auth/google/callback」這個URL。

建立後,您將獲得一個客戶端ID和一個客戶端秘密。保存這些憑證,我們稍後將在Laravel中使用它們。

Laravel Socialite安裝和設定

Laravel Socialite是一個Composer套件,透過命令列安裝即可使用。我們使用以下指令安裝它:

composer require laravel/socialite

安裝完成後,在Laravel設定檔中增加Socialite服務提供者:

'providers' => [
    // ...
    LaravelSocialiteSocialiteServiceProvider::class,
],

還需新增以下設定資訊到Laravel設定檔:

'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT'),

在這裡我們使用了.env檔案保存所需的設定資訊:

GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT=http://localhost:8000/auth/google/callback

Laravel Socialite整合

在這裡,我們需要建立一個路由處理程序,它將處理與Google的OAuth流程。

Route::get('/auth/google', function () {
    return Socialite::driver('google')->redirect();
});

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

第一個路由處理程序將重定向使用者到Google登入流程。

在成功後,使用者將被重定向到第二個路由處理程序中。此時,我們可以使用user()方法來取得已登入使用者的資訊。填寫返回的用戶代碼,列印您獲取的用戶資訊:

$user = Socialite::driver('google')->user();
dd($user);

您會看到其他有關用戶的數據,例如用戶名,電子郵件地址,頭像,令牌等。在此資訊的基礎上,我們可以實現第三方登入了。

在這裡,我們將使用上面獲取到的使用者資訊來建立應用程式使用者並進行身份驗證。

Route::get('/auth/google/callback', function () {
    $user = Socialite::driver('google')->user();
    // save application user
    $authUser = User::where('email', $user->email)->first();
    if ($authUser) {
        Auth::login($authUser, true);
        return redirect('/home');
    }
    // create application user
    $newUser = new User;
    $newUser->name = $user->name;
    $newUser->email = $user->email;
    $newUser->password = bcrypt(str_random(16));
    $newUser->save();
    Auth::login($newUser, true);
    return redirect('/home');
});

在這裡,我們首先使用Google返回的電子郵件地址來尋找現有應用程式使用者。如果找到,則使用Laravel的身份驗證API進行登入。如果找不到,則建立新使用者並使用Laravel的身份驗證API進行登入。

結論

這篇文章介紹如何使用Laravel Socialite和Google實現第三方登入。

透過Google開發平台設置,我們產生了必要的OAuth憑證。然後,我們使用了Laravel Socialite,用於省去OAuth流程中繁瑣的步驟和程式碼。最後,我們使用使用者的現有電子郵件地址進行身份驗證並建立新使用者。

我們希望這篇文章能夠提供如何使用Laravel Socialite和Google實現第三方登入的指導,以及涵蓋OAuth流程的概述。

以上是Laravel開發:如何使用Laravel Socialite和Google實現第三方登入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最後的Laravel版本:遷移教程最後的Laravel版本:遷移教程May 14, 2025 am 12:17 AM

Laravel的遷移系統在最新版本中提供了哪些新功能和最佳實踐? 1.新增了nullableMorphs()用於多態關係。 2.引入了after()方法來指定列順序。 3.強調處理外鍵約束以避免孤立記錄。 4.建議優化性能,如適當添加索引。 5.提倡遷移的冪等性和使用描述性名稱。

Laravel的最新LTS版本是什麼?Laravel的最新LTS版本是什麼?May 14, 2025 am 12:14 AM

Laravel10,釋放的2023年,IstheLatestltSversion,支持Forthreyear。

保持更新:最新的Laravel版本中的最新功能保持更新:最新的Laravel版本中的最新功能May 14, 2025 am 12:10 AM

Laravel的最新版本引入了多個新功能:1.LaravelPennant用於管理功能標誌,允許分階段發布新功能;2.LaravelReverb簡化了實時功能的實現,如實時評論;3.LaravelVite加速了前端構建過程;4.新的模型工廠系統增強了測試數據的創建;5.改進了錯誤處理機制,提供了更靈活的錯誤頁面自定義選項。

在Laravel中實現軟刪除:逐步教程在Laravel中實現軟刪除:逐步教程May 14, 2025 am 12:02 AM

SoftleteTeinElelelverisling -Memptry -BraceChortsDevetus -teedeeceteveveledeveveledeecetteecetecetecedelave

當前Laravel版本:檢查最新版本和更新當前Laravel版本:檢查最新版本和更新May 14, 2025 am 12:01 AM

laravel10.xisthecurrentversion,offeringNewFeaturesLikeEnumSupportineloQuentModelsAndModersAndImpreverModeModeModelBindingWithenums.theSeupDatesEupDatesEnhanceCodereadability andSecurity andSecurity和butquirecareecarefulecarefulecarefulplanninganninganningalmplementAlimplemplemplemplemplemplempletationForupforupsupflade。

如何使用Laravel遷移:逐步教程如何使用Laravel遷移:逐步教程May 13, 2025 am 12:15 AM

laravelmigrationsStreamLinedAtabasemangementbyallowingbolAlyChemachangeStobEdeDinedInphpcode,whobeversion-controllolleDandShared.here'showtousethem:1)createMigrationClassestodeFinePerationFineFineOperationsLikeCreatingingModifyingTables.2)

查找最新的Laravel版本:快速簡便的指南查找最新的Laravel版本:快速簡便的指南May 13, 2025 am 12:13 AM

要查找最新版本的Laravel,可以訪問官方網站laravel.com並點擊右上角的"Docs"按鈕,或使用Composer命令"composershowlaravel/framework|grepversions"。保持更新有助於提升項目安全性和性能,但需考慮對現有項目的影響。

使用Laravel的更新:使用最新版本的好處使用Laravel的更新:使用最新版本的好處May 13, 2025 am 12:08 AM

youshouldupdateTotheLateStlaravelVerverSionForPerformanceImprovements,增強的安全性,newfeatures,BetterCommunitySupport,and long-term-Maintenance.1)績效:Laravel9'Selover9'seloquentormoptimizatizationenenhanceApplicationsPeed.2)secuse:laravel8InIntrododeDodecter.2)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)