laravel開(kāi)發(fā):如何使用laravel socialite和google實(shí)現(xiàn)第三方登錄?
在現(xiàn)代的Web應(yīng)用程序中,用戶(hù)的登錄和認(rèn)證是必不可少的。傳統(tǒng)的基于用戶(hù)名和密碼的身份驗(yàn)證方式已經(jīng)無(wú)法滿(mǎn)足其安全性和便利性的要求。第三方登錄解決了這個(gè)問(wèn)題,它允許用戶(hù)使用他們?cè)谄渌脚_(tái)上已經(jīng)創(chuàng)建的帳戶(hù)即可登錄您的應(yīng)用程序。
在這篇文章中,我們將介紹如何使用Laravel Socialite和Google實(shí)現(xiàn)第三方登錄。
什么是Laravel Socialite?
Laravel Socialite是Laravel社區(qū)中廣泛使用的OAuth認(rèn)證流程的封裝庫(kù)。它允許我們輕松地與多個(gè)第三方服務(wù)(例如Facebook,Twitter,Google等)建立連接。
Google開(kāi)發(fā)平臺(tái)設(shè)置
首先,我們需要在Google開(kāi)發(fā)平臺(tái)中創(chuàng)建OAuth客戶(hù)端 ID。打開(kāi) https://console.developers.google.com/ 并創(chuàng)建一個(gè)新項(xiàng)目。在左上角的“select a Project”下拉菜單中,單擊“New Project”。
填寫(xiě)項(xiàng)目名稱(chēng)和其他項(xiàng)目設(shè)置信息。創(chuàng)建項(xiàng)目后,您會(huì)被重定向到項(xiàng)目的概述頁(yè)面。從頂部菜單中,選擇“API和服務(wù)”>“憑據(jù)”。
單擊“創(chuàng)建憑證”按鈕,并選擇“OAuth客戶(hù)端ID”。
在“應(yīng)用類(lèi)型”下拉菜單中,選擇“Web應(yīng)用程序”。為了實(shí)現(xiàn)Laravel Socialite和Google的集成,我們需要填寫(xiě)“授權(quán) JavaScript來(lái)源”和“重定向URI”字段。
在“授權(quán)JavaScript來(lái)源”字段中,輸入您的應(yīng)用程序的主機(jī)名,我們可以本地使用“http://localhost”的URL。在“重定向URI”字段中,輸入一個(gè)回調(diào)URL,用于從Google登錄后重定向回您的應(yīng)用程序。在本例中,我們將使用“http://localhost:8000/auth/google/callback”這個(gè)URL。
創(chuàng)建后,您將獲得一個(gè)客戶(hù)端ID和一個(gè)客戶(hù)端秘密。保存這些憑據(jù),我們稍后將在Laravel中使用它們。
Laravel Socialite安裝和配置
Laravel Socialite是一個(gè)composer包,通過(guò)命令行安裝即可使用。我們使用以下命令安裝它:
composer require laravel/socialite
安裝完成后,在Laravel配置文件中增加Socialite服務(wù)提供者:
'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集成
在這里,我們需要?jiǎng)?chuàng)建一個(gè)路由處理程序,它將處理與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); });
第一個(gè)路由處理程序?qū)⒅囟ㄏ蛴脩?hù)到Google登錄流程。
在成功后,用戶(hù)將被重定向到第二個(gè)路由處理程序中。 此時(shí),我們可以使用user()方法獲取已登錄用戶(hù)的信息。 填寫(xiě)返回的用戶(hù)代碼,打印您獲取的用戶(hù)信息:
$user = Socialite::driver('google')->user(); dd($user);
您會(huì)看到其他有關(guān)用戶(hù)的數(shù)據(jù),如用戶(hù)名,電子郵件地址,頭像,令牌等。在此信息的基礎(chǔ)上,我們可以實(shí)現(xiàn)第三方登錄了。
在這里,我們將使用上面獲取到的用戶(hù)信息來(lái)創(chuàng)建應(yīng)用程序用戶(hù)并進(jìn)行身份驗(yàn)證。
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返回的電子郵件地址查找現(xiàn)有應(yīng)用程序用戶(hù)。如果找到,則使用Laravel的身份驗(yàn)證API進(jìn)行登錄。如果找不到,則創(chuàng)建新用戶(hù)并使用Laravel的身份驗(yàn)證API進(jìn)行登錄。
結(jié)論
這篇文章介紹了如何使用Laravel Socialite和Google實(shí)現(xiàn)第三方登錄。
通過(guò)Google開(kāi)發(fā)平臺(tái)設(shè)置,我們生成了必要的OAuth憑據(jù)。 然后,我們使用了Laravel Socialite,用于省去OAuth流程中繁瑣的步驟和代碼。最后,我們使用用戶(hù)的現(xiàn)有電子郵件地址進(jìn)行身份驗(yàn)證并創(chuàng)建新用戶(hù)。
我們希望這篇文章能夠提供有關(guān)如何使用Laravel Socialite和Google實(shí)現(xiàn)第三方登錄的指導(dǎo),以及涵蓋OAuth流程的概述。