Chào mừng đến với Chiến Binh Full Stack

Đăng nhập đồng bộ dữ liệu người dùng với Facebook & Google

Cùng 1 người dùng, nếu đăng nhập bằng nhiều cách khác nhau lại tạo ra các tài khoản khác nhau. Bài viết này sẽ hướng dẫn bạn cách giải quyết tình huống đó.

Vấn đề

Mạng xã hội ngày càng phát triển, việc sử dụng tài khoản mạng xã hội để đăng nhập nhanh sẽ giúp ứng dụng của bạn thuận tiện, dễ sử dụng và có lợi thế cạnh tranh hơn so với các ứng dụng khác.

Ứng dụng của bạn đã có chức năng đăng nhập truyền thống. Bạn tiến hành tích hợp thêm chức năng đăng nhập sử dụng tài khoản Facebook và tài khoản Google thì phát sinh ra vấn đề sau:

  • Cùng 1 người dùng, nếu đăng nhập bằng nhiều cách khác nhau lại tạo ra các tài khoản khác nhau. Như trường hợp nêu trên nếu người dùng đăng nhập bằng cả 3 cách thì hệ thống lúc này tạo ra cùng lúc 3 tài khoản khác nhau cho duy nhất 1 người.

Kinh nghiệm giải quyết

Để đồng bộ dữ liệu hay nói cách dễ hiểu là dù người dùng có đăng nhập bằng phương thức nào đi chăng nữa thì ứng dụng vẫn sẽ truy cập vào đúng duy nhất 1 tài khoản của họ. Bài viết này sử dụng tài khoản Facebook & Google làm đại diện nhưng đây là kiến thức chung có thể áp dụng được cho bất kỳ nền tảng nào.

Bước 1: Định danh tài khoản

Bạn cần xác định được dữ liệu nào được sử dụng để định danh tài khoản của người dùng. Các dữ liệu thông thường được dùng để định danh bao gồm:

  • ID, hay còn gọi là mã số thành viên.
  • Địa chỉ email.
  • Số điện thoại.
  • Tên đăng nhập do người dùng tự đặt.

Mình thường sử dụng địa chỉ email làm định danh cho tài khoản. Như vậy, ở bước này mình đã có thể liệt kê ra được định danh tài khoản của 3 nền tảng lần lượt như sau:

  • Ứng dụng của mình: Email
  • Facebook: ID, có thể lấy thông tin email.
  • Google: ID, có thể lấy thông tin email.

Đăng nhập đồng bộ dữ liệu người dùng với Facebook & Google
Email là một trong những dữ liệu được sử dụng để định danh nhiều nhất

Bước 2: Đăng ký & Đăng nhập

Đăng nhập đồng bộ dữ liệu người dùng với Facebook & Google
Đăng ký & Đăng nhập sử dụng tài khoản Facebook & Google

  • Khi người dùng đăng ký tài khoản vào ứng dụng, mình sẽ kiểm tra và chắc chắn rằng email họ khai báo không trùng với bất kỳ email nào khác đã tồn tại trên hệ thống.
  • Khi người dùng đăng nhập sử dụng tài khoản Facebook, mình sẽ lấy ra thông tin ID và email của người dùng từ Facebook. Lưu ý:
    • Nếu không lấy được đủ thông tin ID và email thì mình sẽ hiện thông báo lỗi và không cho phép đăng nhập sử dụng Facebook. Như vậy, một số người dùng tạo tài khoản Facebook nhưng không khai báo email sẽ không thể đăng nhập được. Vấn đề này sẽ được giải quyết ở bước 3.
    • Nếu lấy được đủ thông tin ID và email, mình sẽ tiến hành kiểm tra lần lượt:
      1. Kiểm tra nếu ID tài khoản Facebook trùng với ID đã lưu liên kết với tài khoản của thành viên nào thì thực hiện đăng nhập vào tài khoản của thành viên đó. Đồng thời, kiểm tra nếu email lấy được từ Facebook khác với email hiện tại của thành viên vừa đăng nhập và không trùng với bất kỳ thành viên nào khác thì sẽ cập nhật lưu thông tin địa chỉ email này vào database.
      2. Nếu ID tài khoản Facebook không khớp với thành viên nào cả, kiểm tra tiếp đến email, nếu trùng email với thành viên nào thì thực hiện đăng nhập vào tài khoản của thành viên đó. Đồng thời cập nhật ID liên kết với tài khoản Facebook vào cho thành viên vừa đăng nhập.
      3. Nếu cả ID lẫn email lấy được từ Facebook không khớp với bất kỳ thành viên nào đang có trong hệ thống, tiến hành khởi tạo tài khoản mới theo các thông tin lấy được từ Facebook và thực hiện đăng nhập luôn vào tài khoản vừa khởi tạo.
  • Khi người dùng đăng nhập sử dụng tài khoản Google, các bước tiến hành cũng tương tự như việc đăng nhập sử dụng tài khoản Facebook ở trên.

Bước 3: Liên kết tài khoản mạng xã hội

Do định danh tài khoản đang được sử dụng là email nên với một số tài khoản Facebook đăng ký bằng số điện thoại và không khai báo email với Facebook sẽ không thể đăng nhập được như đã đề cập ở bước 2. Để giải quyết vấn đề này, tại trang tài khoản của ứng dụng sẽ có bổ sung thêm chức năng cho phép thành viên bấm nút để liên kết với tài khoản Facebook. Cụ thể: Khi thành viên bấm vào nút "Liên kết với tài khoản Facebook", hệ thống cũng sẽ gọi đến chức năng đăng nhập bằng Facebook như bình thường và tiến hành:

  1. Nếu ID bắt được từ Facebook đã có liên kết với 1 tài khoản khác thì hiện lên thông báo: "Tài khoản Facebook của bạn đã liên kết với tài khoản có địa chỉ email là x".
  2. Nếu ID bắt được từ Facebook chưa có liên kết với tài khoản nào thì tiến hành cập nhật ID này cho tài khoản của thành viên đang thao tác, đồng thời hiện lên thông báo: "Đã liên kết tài khoản Facebook thành công, về sau bạn có thể đăng nhập nhanh vào ứng dụng với tài khoản Facebook này". Trường hợp này, từ lần đăng nhập sau nếu người dùng bấm nút "Đăng nhập bằng Facebook" thì ở bước 2 sẽ khớp với trường hợp 1 và đăng nhập được bình thường.

Đăng nhập đồng bộ dữ liệu người dùng với Facebook & Google
Liên kết tài khoản Facebook & Google vào tài khoản người dùng

Thực tế bạn chỉ cần làm nút "Liên kết với tài khoản Facebook" là đủ rồi vì với tài khoản Google sẽ luôn bắt được địa chỉ email. Tuy nhiên, bạn nên làm luôn cả nút "Liên kết với tài khoản Google" để trong trường hợp thành viên muốn liên kết sau khi đã đăng nhập vào tài khoản theo cách truyền thống thì vẫn có thể thực hiện được.