Tạo hệ thống đăng nhập cho user với Facebook và Laravel Socialite

Bạn sẽ học được gì qua bài viết này?

Trong bài này bạn sẽ biết được cách tạo hệ thống đăng nhập để xác thực user bằng cách sử dụng 1 mạng xã hội (như Facebook, Twitter, Gmail …) với Socialite – 1 package của Laravel.

Cài đặt Socialite

Với các PHP Framework khác thì việc xây dựng hệ thống đăng nhập thông qua bên thứ 3 khá phức tạp và có ít tài liệu hướng dẫn, tuy nhiên đối với Laravel thì lại vô cùng dễ dàng. Hiện tại, Socialite hỗ trợ đăng nhập qua các mạng xã hội Facebook, Github, Google, Twitter và Bitbucket. Nếu bạn muốn sử dụng Socialite với các mạng xã hội khác (như Youtube, WordPress …) thì bạn có thể tham khảo Socialite Providers

Tuy đã được giới thiệu trong documentation của Laravel phiên bản 5.4 tuy nhiên Socialite mặc định vẫn chưa phải là core của Laravel. Do đó bạn cài đặt Socialite bằng composer

Hoặc bạn có thể thêm dòng bên dưới vào phần require của file composer.json rồi chạy lệnh composer update

Sau khi đã cài đặt Socialite bạn cấu hình lại file config/app.php => thêm dòng sau vào mảng providers

Tiếp tục bạn thêm 1 facade với tên Socialite vào mảng aliases

Ok, đến đây thì bạn đã có thể sẵn sàng sử dụng Socialite trong project Laravel của bạn rồi đấy!

Tạo Facebook app

Để có thể sử dụng Facebook như một hệ thống đăng nhập cho user thì bạn cần phải tạo 1 Facebook app. Đừng lo lắng, điều này cũng vô cùng dễ dàng! Đầu tiên bạn hãy đăng nhập vào account Facebook của bạn và truy cập vào https://developers.facebook.com

Phần Account Menu ở góc phải trên cùng bạn click vào Add a New App và chọn Website để tạo Facebook app

Điều vào tên app của bạn và bấm Create New Facebook App ID. Màn hình sẽ xuất hiện như bên dưới

Chọn category cho Facebook app của bạn rồi bấm Create App ID, sau đó bấm vào Skip Quick Start để vào phần Dashboard của app

Để có thể lấy được App Secret, bạn bấm vào nút Show rồi điền mật khẩu tài khoản Facebook của bạn.

Tạo Facebook test app

Nếu bạn đang muốn test chức năng Facebook login trên localhost, hãy bấm vào menu Test App tại phần Dashboard, điền vào đầy đủ thông tin rồi bấm Create Test App (như hình bên dưới)

Sau đó bạn vào Settings > Add Platforms > Website, điền vào domain website của bạn trên localhost vào 2 phần App DomainsSite URL, ví dụ cookbook.app (về việc set domain ảo trên localhost cho Apache bạn có thể tham khảo trên Internet)

Sau cùng hãy bấm vào Save Changes để lưu lại toàn bộ thay đổi. Và nhớ đừng quên 2 thông tin quan trọng nhất để bạn có thể sử dụng ở bước tiếp theo là App IDApp Secret

Cấu hình Facebook app trong Laravel project

Sau khi đã tạo xong 1 Facebook app, bạn có thể liên kết nó với Laravel bằng cách sửa file config/services.php

Hoặc bạn có thể sử dụng biến từ file .env

Lúc đó bạn có thể chỉnh lại file config/services.php như sau

Trong đó yourFacebookAppIDApp IDyourFacebookAppSecretApp Secrethttp://yourLaravelAppURL/login/facebook/callback là link trên website của bạn mà user sau khi đăng nhập Facebook app thành công sẽ được redirect tới.

Đến đây thì quá trình cài đặt và cấu hình Socialite cho Laravel đã hoàn tất! Bạn có thể tham khảo kỹ hơn documentation của Socialite trên Github tại đây https://github.com/laravel/socialite để hoàn tất hệ thống đăng nhập user của bạn.

Happy coding! 😀