Laravel Socialite 簡易的FB登入教學
一開始是使用FB的sdk登入, 在測試的時候都很正常
但是上線後發現了一個致命的BUG,就是手機APP使用LINE或FB messager開啟網站的話,無法登入 😱
上網查資料發現沒有解決方法只能改變方式登入,所以馬上導入Laravel/Socialite
一、先使用composer 下載 Laravel/Socialite
composer require laravel/socialite
二、laravel進行設定
config/app.php
<?php
return [
//自動載入Service Providers
'providers' => [
//Facebook登入
Laravel\Socialite\SocialiteServiceProvider::class,
],
//類別命名
'aliases' => [
//Facebook登入
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],
];
config/services.php
<?php
return [
'facebook' => [
'client_id' => env('FB_CLIENT_ID'),
'client_secret' => env('FB_CLIENT_SECRET'),
'redirect' => env('FB_REDIRECT'),
],
];
三、程式碼
routes/web.php
//第三方登入 Route::get('/facebook/link','MemberController@facebookLink'); Route::get('/facebook/callback','MemberController@facebookCallback');
controllers
//在最上方記得引入 use Socialite;
public function facebookLink(Request $request) { //紀錄一開始頁面的url,因為登入成功後要跳轉回來 Session::flash('url',$request->server('HTTP_REFERER')); return Socialite::driver('facebook')->redirect(); }
//fb登入 public function facebookCallback() { try { //錯誤的話,跳轉到首頁 if(request()->error=="access_denied") { return redirect('/'); } //印出所有資料 $user = Socialite::driver('facebook')->user(); //個別印出資料 $open_id = $user->getId(); $fb_email = $user->getEmail(); $fb_name = $user->getName(); //擁有以上的資料後,就可以開始寫登入邏輯拉~ //...... //...... //...... //...... //用member_id直接登入 Auth::loginUsingId($member_id); //跳轉回一開始的頁面 return redirect(Session::get('url')); } catch (Exception $e) { return redirect('/'); } }
view
<a href="/facebook/link"> fb登入 </a>
留言
張貼留言