iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
0
Software Development

後端PHP+Laravel--新手實戰日記系列 第 27

Day27-Laravel Socialite-簡易實現Github第3方登入(1)

胎嘎侯

筆者本身很討厭記帳號密碼,就 是 很 容 易 忘 記,而第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,裏面會有詳細的說明。
https://ithelp.ithome.com.tw/upload/images/20191012/20119022hMMVW84w1e.png

  • Installationcomposer 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');

依照文件先搞定這些設置,其他的明天繼續!
如文章有任何問題,不吝賜教,歡迎歡迎。


上一篇
Day26-Laravel新手基礎訓-Database: Seeding 埋下資料種子
下一篇
Day28-Laravel Socialite-簡易實現Github第3方登入(2)
系列文
後端PHP+Laravel--新手實戰日記30

1 則留言

0
小克
iT邦新手 5 級 ‧ 2020-05-31 18:30:09

最後的 route (web.php) 應該是要指向 SocialController

我要留言

立即登入留言