Xây dựng API login Google, Facebook, Twitter hay Github với server laravel cho các dự án về App Mobile

1038

Người viết: Nguyễn Văn Quy

Lời nói đầu

Trong những năm gần đây, sự thông dụng của smartphone cũng làm ngành Lập trình phát triển ứng dụng di động (Mobile Application Development) có những bước tiến lớn. Ngày càng nhiều các ứng dụng mobile app được ra đời cùng với sự tiện ích hơn, dễ sử dụng hơn (đăng nhập thuận tiện hơn, giao diện dễ dùng, tốc độ nhanh hơn,…)

Cách các app đăng nhập

May mắn cho mình cũng được làm việc trong team phát triển app mobile với vai trò là backend developer. Tuy nhiên vấn đề chính mà mình đang hướng đến tại đây là “Xây dựng API login Google, Facebook, Twitter hay Github với server laravel cho các dự án về App Mobile”. Với việc đăng nhập bằng Google, Facebook, Twitter hay Github, … bạn sẽ không phải mất thời gian làm công đoạn đăng ký phức tạp, nhập 1 đống input thông tin, rồi còn phải chờ email để active tài khoản bla…bla như trước đây nữa. Để đăng nhập vào app chỉ cần chọn mạng xã hội mà bạn muốn đăng nhập. Ví dụ bạn muốn kết nối với mạng xã hội Facebook chẳng hạn. Bấm vào icon Facebook rồi đồng ý chuyển hướng đến trang đăng nhập của facebook

Sau khi đăng nhập thành công thì cũng đồng nghĩa bạn đã đăng nhập thành công vào ứng dụng. 🤗

Ý tưởng đăng nhập cho app và server

  • Bên app sẽ setup package Facebook SDK , Google SDK. Các package đều hỗ trợ cho hệ điều hành Android và Ios
  • Sau khi bên app cài đặt và sử dụng các package cho các mạng xã hội. Tiến hành đăng nhập tại app, response trả về sẽ gồm có: access_tokenprofile user, …. Nhưng cái quan trọng nhất mà bên server cần ở đây chỉ là access_token.
  • Bên server viết 1api authentication cho app và yêu cầu 1 request từ bên app là access_tokenmà bên app vừa nhận được ở trên. Tại server sẽ gửi lại 1 request lên trên facebook, google,… để xác định đúng phiên đăng nhập cũng như lấy lại thông tin user từ các mạng xã hội. Sau đó sẽ check email (facebook, google) xem email này đã được đăng ký từ hệ thống chưa. Nếu đăng ký rồi => tự động đăng nhập app, nếu chưa tồn tại, tự động đăng ký cho user dựa vào thông tin nhận được từ mạng xã hội (tên, avatar,…).

Xây dựng API

Sau khi tải laravel/passport về project trong migration sẽ tạo các table của nó, nên chúng ta hãy tiếp tục chạy migrate để thêm vào database.

Tiếp theo chúng ta cần chạy command passport:install, command này sẽ tạo một encryption keys dùng để bảo mật cho access token. Nó sẽ tạo ra “personal access” and “password grant” clients là 2 lựa chọn cho bảo mật access token.

Trong Models User thêm như bên dưới.

Trong config/auth.php sửa lại driver api là passport.

Dưới đây sẽ là function login của chúng ta. Request nhận vào chính là access_token và provider chúng ta cũng có thể gửi thẳng qua url cũng được.

Đăng nhập với google, server sẽ gửi 1 request ứng với access_token của nó và lấy ra profile của user.

Tương tự facebook cũng vậy, nó cũng trả về các thông tin mà ta cần.

Sau khi lấy được profile của user trên các mạng xã hội, việc còn lại là kiểm tra xem email của user đã được đăng ký tại hệ thống của chúng ta chưa.

Tổng kết:

Kết luận

Việc xây dựng API login Google, Facebook, Twitter hay Github với server laravel cho các dự án về App Mobile cũng khá đơn giản nhưng nó mang lại vô cùng tiện lợi cho người dùng 👍👍👍

Techtalk via Viblo

CHIA SẺ