logo
Hỗ trợ: 24/7
Điện thoại: 098 984 8886
Email: info@thuonghieuweb.com

Viết chức năng đăng nhập bằng tài khoản facebook không dùng Facebook SDK

1/5 798 votes
updated on 2020-11-27

Hiện nay hẳn các bạn sẽ bắt gặp rất nhiều trang web có chức năng sử dụng tài khoản facebook để đăng nhập, điều đó thuận tiện ở chỗ người dùng không phải mất công tạo tài khoản trên trang web mình mà vẫn có thể nhanh chóng đăng nhập để sử dụng các chức năng của thành viên.

Nếu bạn có ý định tích hợp chức năng đăng nhập bằng facebook cho website của mình mà không muốn sử dụng facebook SDK hoặc chỉ muốn tự mình viết để hiểu được cơ chế xác thực của facebook thì bài viết này sẽ hướng dẫn cho các bạn làm được điều đó với minh họa bằng ngôn ngữ PHP.

Sau bài viết này, nếu nắm được các bước thực hiện các bạn hoàn toàn có thể áp dụng cho các tài khoản khác như google, hoặc sử dụng ngôn ngữ lập trình khác để làm điều tương tự.

Toàn bộ các bước thực hiện trong bài viết này được sử dụng thông tin hướng dẫn bởi facebook ở 2 địa chỉ sau:

- https://developers.facebook.com/docs/facebook-login/web

- https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow

Quy trình xác thực bằng facebook

Để xác thực bằng facebook chúng ta sẽ trải qua 4 bước cơ bản như sau:

  • Đầu tiên, từ trang web của mình, chúng ta yêu cầu người dùng cho phép truy cập vào thông tin của người dùng (Từ thông tin này ta sẽ dùng để đăng nhập vào hệ thống). Thực ra ở bước này ta sẽ chuyển hướng người dùng đến trang xác thực của facebook.

  • Tiếp theo, người dùng sẽ xác nhận và cung cấp cho ta các quyền để truy cập vào thông tin của người dùng.

  • Sau đó, facebook sẽ chuyển hướng người dùng về lại trang web của ta cùng với thông tin về quyền truy cập mà người dùng đã cho phép.

  • Từ thông tin facebook trả về, ta sẽ gọi các hàm API của facebook để lấy thông tin của người dùng như user name, email…

  • Với những thông tin đã có được, ta tiến hành đăng nhập cho người dùng ( chẳng hạn lưu vào session rằng người dùng đã đăng nhập), nếu muốn ta có thể sử dụng thông tin người dùng để lưu vào database.

Tôi đã hệ thống các bước trên lại thành sơ đồ đơn giản như sau:

so do dang nhap facebook


Cùng viết vài đoạn code

Dưới đây tôi sẽ cố gắng trình bày thật chi tiết và dễ hiểu việc thực hiện sơ đồ trên với một ví dụ đăng nhập đơn giản, sử dụng ngôn ngữ PHP.

(Xin chú ý các bước dưới đây là các bước thực hiện chứ không có quan hệ song song với các bước ở sơ đồ trên)

Bước 1: Tạo một Facebook App và Setting

Trước tiên, ta cần tạo 1 app trong facebook và cài đặt nó để chạy trên môi trường vdata.com.vn(vì ở đây tôi sẽ ví dụ chạy trên vdata.com.vn, các bạn có thể sửa lại cài đặt cho phù hợp với môi trường riêng của mình)

Tạo 1 app mới tại https://developers.facebook.com/apps/ và điền các thông tin cơ bản:



Ở mục Cài đặt - > Thông tin cơ bản: điền các thông tin yêu cầu:


Ở hình trên ta thấy có 2 thông tin quan trọng là ID ứng dụng và Khóa bí mật của ứng dụng sẽ được sử dụng trong code sau này.
Ở mục Xét duyệt ứng dụng ta thực hiện đặt chế độ công khai cho ứng dụng:

Bước 2: Tạo trang đăng nhập

File: index.php

Sau khi đã tạo xong app trên facbook, tiếp theo ta tạo trang đăng nhập cho website của mình. Để cho đơn giản, trang đăng nhập của tôi chỉ bao gồm 1 nút đăng nhập. Khi người dùng kích chuột vào đó, nó sẽ nhảy tới trang xác thực của facebook.


                                     Màn hình login

                         Màn hình xác thực facebook


Code của trang index.php

Ở dòng 12, trong thẻ ta có 2 tham số quan trọng:

  • client_id : đây là APP ID của app ta vừa tạo
  • redirect_uri : sau khi người dùng xác thực với facebook xong, facebook sẽ tự động điều hướng người dùng trở lại địa chỉ này. (tại đây ta sẽ xử lý các tham số được gởi về bởi facebook để lấy thông tin người dùng)
  • scope: yêu cầu truy cập vào thông tin người dùng, vì chỉ cần lấy thông tin cá nhân cơ bản nên scope là public_profile

Bước 3: Tạo trang xử lý khi người dùng đã xác thực bằng facebook

File: callback.php

Ở bước này ta thực hiện 3 bước nhỏ:

  • Lấy access token từ giá trị trả về của facebook

  • Lấy thông tin người dùng từ access token có được

  • Login người dùng vào hệ thống

Sau khi đã xác thực xong với facbook, người dùng sẽ được chuyển hướng về lại địa chỉ http://vdata.com.vn/thuvien/fblogin/callback.php . Khi chuyển hướng người dùng trở lại trang callback.php , facebook gởi thêm các thông tin xác thực của người dùng, từ đó ta có thể lấy được thông tin của người dùng vừa xác thực.

Cụ thể ở đây facebook điều hướng người dùng về địa chỉ của ta cùng với một tham số GET code như url sau:



Từ giá trị của code ta sẽ lấy ra được access token để truy cập vào thông tin người dùng bằng cách gọi một HTTP GET request đến địa chỉ có dạng như sau:

Nếu như thành công, ta sẽ nhận được kết quả trả về:

Dưới đây là đoạn code thực hiện các công việc trên:


Để lấy được thông tin người dùng ta gọi đến Facebook Graph API sau:

Thông tin facebook user lấy bằng Graph API

Đoạn code lấy thông tin người dùng bằng Facebook Graph API



Toàn bộ code đầy đủ file callback.php

Bước 4: Lưu thông tin người dùng nếu muốn

Ở bước 3, sau khi đã lấy thông tin người dùng, các bạn có thể lưu người dùng vào database, hoặc kiểm tra người dùng đã có trên hệ thống chưa … Thông tin bây giờ là của bạn, các bạn có thể làm bất cứ điều gì mình muốn.

Hy vọng, với những bước đơn giản ở trên, các bạn có thể tự nắm được cách xác thực của facebook để lấy thông tin người dùng, hoặc bằng một vài thay đổi nhỏ ở bước 1, các bạn hoàn toàn có thể yêu cầu người dùng cung cấp quyền post bài viết, upload ảnh … các bạn nên đọc thêm ở 2 link mình đã dẫn ra ở trên để có thể làm được điều này.

Ngoài ra, mình mong rằng với cách xác thực bằng facebook ở trên, các bạn cũng có thể tự mình viết được những đoạn mã xác thực cho các mạng xã hội khác như google, twitter…

Bên cạnh đó các bạn có thể chạy thử demo tại đây: http://vdata.com.vn/thuvien/loginfb/




   
 
Có thể bạn muốn xem thêm....

Những điều cần biết khi xây dựng website

Xây dựng một website không đơn giản chỉ là một gian hàng hay một tờ rơi. Bạn cần phải làm mọi cách để website của mình hướng tới khách hàng, và quan trọng hơn cả, là làm sao để nội dung của bạn có sức lan tỏa nhanh chóng trong môi trường mạng từ đó lôi kéo khách hàng đến với website của bạn

Xem chi tiết

Những điều cần biết về dịch vụ email với tên miền riêng

Email tên miền riêng là email gắn với tên miền của doanh nghiệp kiểu như tennhanvien@tencongty.com. Email tên miền riêng sẽ tạo sự chuyên nghiệp và tin cậy khi giao dịch, đồng thời có thể cấp phát cho nhân viên khi mới đi làm, thu hồi lại khi nhân viên đó thôi việc và lưu trữ được mọi giao dịch trên email mà không sợ nhân viên đổi mật khẩu, mang theo hòm thư khi rời công ty...

Xem chi tiết
Đội ngũ lập trình viên, kỹ thuật viên và seo-er của Thương Hiệu Web cam kết

Hỗ trợ 24/7

Hỗ trợ khách hàng 24 giờ 1 ngày, 7 ngày 1 tuần qua điện thoại, email và chat online

Hoàn tiền 100%

Trong thời gian 45 ngày sử dụng dịch vụ, nếu quý khách không hài lòng!

Cam kết uptime 99.99%

Nếu dịch vụ của quý khách bị gián đoạn, chúng tôi sẽ cộng thêm 1 tháng sử dụng

KHÁCH HÀNG NÓI VỀ CHÚNG TÔI

Một đơn vị xây dựng web tận tâm và chuyên nghiệp!

"Thương Hiệu Web là đơn vị thiết kế website có năng lực, tôn trọng và có trách nhiệm với khách hàng, đặt mình vào vị trí khách hàng để mang lại cho khách hàng nhiều giá trị từ chính dịch vụ của mình. Với tôi, Thương Hiệu Web là một lựa chọn hợp lý!" Chị Nguyễn Phượng, TP kinh doanh, Công Ty Cổ Phần Quản Lý Công Trình Đô Thị Hải Dương.

Xem bình luận trên FB
Sitemap Điều khoản sử dụng Chính sách riêng tư
Bản quyền thuộc về công ty cổ phần truyền thông số VDATA
Tầng 2, tòa nhà 71 Hoàng Cầu, Đống Đa, Hà Nội
Điện thoại: (04) 3990 9643 - Email: info@vdata.com.vn
Giấy chứng nhận ĐKKD số: 0102766780, do Sở KHĐT Tp Hà Nội cấp ngày 28/04/2009

Online