iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 29
0
Software Development

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

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

胎嘎侯

延續昨日印出授權登入資訊後,談到我們可能需要用戶資料來進行網站分析。
不過在此之前,先用Laravel方便的套件來產生會員系統,請執行以下命令。

composer require laravel/ui --dev

php artisan ui vue --auth


接著生成User資料庫欄位

php artisan migrate 

回到首頁,點選進入Login頁面發現只有Login的按鈕,但考量到使用者可能會因為種種原因不想註冊網站會員,因此提供Github登入的第3方服務讓使用者選擇,所以此處還要新增一個Github的登入按鈕。

打開/resources/views/auth/路徑下的login.blade.php新增。

由於前端的畫面筆者還不太懂,因此參考教學影片中作者drehimself提供的程式碼,從第60行到73行來製作按鈕。
程式碼插入之後重整網頁,成功出現!

回到SocialController,加入以下程式碼

    public function handleProviderCallback()
    {    
        //利用第3方登入與github溝通,取得使用者訊息
        $user = Socialite::driver('github')->user();
        
        //first()只需要從數據庫表中檢索一行,比對資料表與獲取的$user訊息
        $account = User::where('email',$user->email)->first();
        
        //如果用戶為空,則新增資料到資料表中,取決於你需要哪些使用者訊息
        if(!$account){
            User::create([
                'email'=>$user->email,
                'name'=>$user->nickname,
                'password'=>bcrypt('githubtest')
            ]);
        }
    
         // 登入並且「記住」使用者...
        Auth::login($account);
        //回到首頁
        return redirect('/');

我們重回http://127.0.0.1:8000/login ,點選
跳出下圖,點選Authorize

成功登入並導回首頁,右上角顯示,利用Github的身分順利登入網站。

登入的同時,當初註冊Github的信箱會收到通知[GitHub] A third-party OAuth application has been added to your account。

資料庫有什麼變化呢?

登入用戶資料也順利入庫了,就可以拿來做更多分析囉

最後,這邊要提醒如果是要測試授權登入的頁面,請務必到Developer settings按下Revoke all user token呈現為0位user,不然會一直報錯qq


一個利用Laravel Socialite-簡易實現Github第3方登入實作完成,到此也告一段落了。在此筆者認為還有很多未說或說不深入的地方,實在有些抱歉,OAuth實在是個很有趣,但同時也非常需要花時間探究的主題,日後我會更努力來探究它。

不管哪個教學都可能會踩坑,這次我也踩了不少,只能說文章多看看多試試,會找到適合自己的方式,也謝謝那些願意分享經驗讓我汲取的前輩們。

努力不停歇,我們明天見~
如文章有任何問題,不吝賜教,歡迎歡迎。


上一篇
Day28-Laravel Socialite-簡易實現Github第3方登入(2)
下一篇
Day30-Laravel Faker偽造數據,真真假假,就跟生活一樣
系列文
後端PHP+Laravel--新手實戰日記30

尚未有邦友留言

立即登入留言