第三方登入串接
Socialite 是 Laravel 提供的第三方登入的擴充, 對 OAuth providers 進行身份驗證
composer require laravel/socialite
使用 socialite 前, 需要對 OAuth 服務的供應商設置憑證.
設置檔案為: config/service.php
設置的內容取決於使用的供應商.
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => 'https://接收認證後訊息的網址',
],
GitHub 提供的 OAuth
設定完憑證後. 需要設定二組路由
- 跳轉至 OAuth 服務的頁面
- 接收回應訊息的頁面
class LoginController 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->id
}
}
web.php 路由設定
Route::get('/login/github', 'Auth\LoginController@redirectToProvider');
Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');