胎嘎侯
筆者本身很討厭記帳號密碼,就 是 很 容 易 忘 記,而第3方登入的出現對金魚腦User真是一大福音(灑花),開心之餘也很好奇到底第3方登入是怎麼實現的,於是找了一些教學試做如何建立Github第3方登入,雜揉並把過程筆記分享給各位。
Laravel Socialite - Useful Laravel Packages
laravel 專案如何實現 Github 登入
利用 Laravel 實作 Line 登入,並取得使用者的 ID 及 資料
我們先來看看官方文件對Laravel Socialite的介紹
Laravel提供Laravel Socialite可通過OAuth提供程序進行身份驗證的簡便方法,目前支持Facebook,Twitter,LinkedIn,Google,GitHub,GitLab和Bitbucket進行身份驗證。
參考官方文件:
安裝 composer require laravel/socialite
跳至官方文件提供的Socialite Providers
網站中有各式可供第三方服務的登入認證,請點選此次要試做的Github,裏面會有詳細的說明。
composer require socialiteproviders/github
config\app.php
文件中是否存在Laravel\Socialite\SocialiteServiceProvider
,有的話請移除它。接著新增\SocialiteProviders\Manager\ServiceProvider::class,
至providers。'providers' => [
// a whole bunch of providers
// remove 'Laravel\Socialite\SocialiteServiceProvider',
\SocialiteProviders\Manager\ServiceProvider::class, // 新增
];
回到官方文件
將下列資訊添加在config/services.php文件中,等等才會更動它們。
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => 'http://your-callback-url',
],
執行php artisan make:controller SocialController
,建立SocialController。複製官方文件範例,在最上方加上use Socialite
使用Socialite facade訪問Socialite。
<?php
namespace App\Http\Controllers\Auth;
use Socialite;
class SocialController extends Controller
{
/**
* 將用戶重定向到GitHub身份驗證頁面。
*
* @return \Illuminate\Http\Response
*/
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
/**
* 從GitHub獲取用戶信息。
*
* @return \Illuminate\Http\Response
*/
public function handleProviderCallback()
{
$user = Socialite::driver('github')->user();
// $user->token;
}
}
定義路由:路由的部份有兩個,一條用於將用戶重新導向至OAuth提供程序,另一條用於在身份驗證之後接收來自提供程序的回調。
web.php
//將用戶重新導向至OAuth提供程序
Route::get('login/github', 'Auth\LoginController@redirectToProvider');
//在身份驗證之後接收來自提供程序的回調。
Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');
依照文件先搞定這些設置,其他的明天繼續!
如文章有任何問題,不吝賜教,歡迎歡迎。