2021-03-31|閱讀時間 ‧ 約 4 分鐘

Laravel Socialite - Facebook 第三方登入

Laravel設定
1. 安裝Socialite: 在之前的google第三方登入文章有提到,不再贅述。
2. .env新增: FB_CLIENT_ID=xxx FB_CLIENT_SECRET=xxx FB_REDIRECT=http://yourdomain/facebook/authCallback
3. config/services.php新增: 'facebook' = [ 'client_id' = env('FB_CLIENT_ID'), 'client_secret' = env('FB_CLIENT_SECRET'), 'redirect' = env('FB_REDIRECT'), ]
4. config/app.php providers新增: Laravel\Socialite\SocialiteServiceProvider::class,
5. config/app.php aliases新增: 'Socialite' = Laravel\Socialite\SocialiteServiceProvider::class,
6. route/web.php新增: Route::get('/facebook/auth', [FBSocialiteController::class, 'fbLogin']); Route::get('/facebook/authCallback', [FBSocialiteController::class, 'fbLoginCallback']);

FB相關設定

1. 註冊FB開發者帳號: https://developers.facebook.com/
2. 首頁 - 我的應用程式 - 建立應用程式
照著圖片步驟填,最後拿到應用程式編號與密鑰,填回Laravel config中。
需特別注意,要記得設定OAuth callback url: 上述提到的.env中FB_REDIRECT這串http://yourdomain/facebook/authCallback

Source code
注意:
回傳的avatar url後面要加上&access_token=yourtoken 帶上拿到的token,才能看到正常圖片,不然會看到這樣灰底的大頭貼:

後記: 設定想存取什麼資料
public function fbLogin(){ return Socialite::driver('facebook')-scopes(['user_friends'])-redirect(); }
這邊可以改成-scopes(['user_friends'])之類的,來設定想取得user什麼樣的資料,user登入時會跳出視窗詢問同不同意,例如user_friends就是朋友名單。
user同意登入後,callback取得的token,就有權限可以存取user朋友資料,需再額外存取graph api帶上token來拿。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.