Android

Firebase, Bài 1.3: Giới thiệu về Authentication.

Chúng ta sẽ tiếp tục cọ xát với Firebase Authentication. Trong bài viết cuối cùng này, tôi sẽ cung cấp cho các bạn các thông tin khái quát về Users, và khi nào thì bạn nên dùng Firebase Authentication và khi nào bạn nên tự làm một hệ thống riêng.

FirebaseAuthentication

8. Firebase Users.

A Firebase User object represents the account of a user who has signed up to an app in your Firebase project. Apps usually have many registered users, and every app in a Firebase project shares a user database. A Firebase User instance is independent from a Firebase Auth instance. This means that you can have several references to different users within the same context and still call any of their methods.

Mặc định, Firebase cung cấp 3 trường (properties) cho mỗi user để chúng ta quản lí, bao gồm địa chỉ email, tên hiển thị (display name) và một profile picture URL (lưu ý, là URL hay link, chứ không phải là luôn 1 file). Bạn không thể trực tiếp thêm bất kì một trường nào khác, mà chỉ có thể làm theo hướng gián tiếp, và thông thường, là qua Firebase Realtime Database hay Firebase Storage (tôi sẽ giới thiệu các sản phẩm này sau). Như vậy, bạn buộc phải lưu tập tin profile picture của các users ở Firebase Storage, Realtime Database hoặc ở nơi nào khác và trỏ link về Firebase User profile picture URL. Về email, nếu user sign up qua email và password (xem lại bài trước), thì email đó sẽ được gán vào trường user. Còn nếu user sign up qua các nhà cung cấp bên ngoài như Facebook, Twitter thì Firebase sẽ tự lấy email CHÍNH của người dùng đó gán vào CSDL của project. Còn nếu user sign up qua Google, đương nhiên đó sẽ là địa chỉ GMail của họ.

Cũng như các user session của Facebook, Twitter và Google, mỗi user session của Firebase cũng có một khoảng thời gian khả dụng nhất định, kể từ lần cuối người dùng đăng nhập. Khi người dùng chưa đăng xuất khỏi ứng dụng Android, iOS hoặc Web của bạn, thì session của họ vẫn được giữ nguyên – trừ trường hợp Anonymous user có thể có khác biệt đôi chút.

Firebase Authentication mang tính “trọn gói” cao tới mức họ cung cấp sẵn các hoạt động email verification và password reset. Tất nhiên, bạn có thể cấu hình lại ở một mức độ nào đó, như thay đổi nội dung mặc định của email xác nhận, cũng như trang password reset. Như vậy, có thể nói, nếu bạn đã quyết định sử dụng Firebase là dịch vụ back-end, thì nỗi lo của bạn chỉ còn ở việc viết code, gỡ lỗi và vá lỗi trong phần code của ứng dụng. Các phần khác, họ sẽ lo gần như trọn gói.

Để lấy các thuộc tính của mỗi user, ta chỉ cần gọi các hàm đơn giản.

Đối với Android, class FirebaseUser là nơi chứa các hàm quản lí user. Lưu ý: Bạn không bao giờ dùng Constructor để trực tiếp tạo 1 instance của class này, mà phải gián tiếp thông qua FirebaseAuth#getCurrentUser(). Cụ thể như sau:

Đặc biệt, nếu bạn chỉ có 1 Activity duy nhất, từ đăng nhập, thao tác cho tới đăng xuất thì bạn có thể tạo 1 field member mAuth như trong các bài trước. Ví dụ:

Đối với iOS, bạn sẽ lấy các thông tin qua các hàm trong FIRUser, qua hàm FIRAuth.auth()?.currentUser. Cụ thể như sau:

Còn web, bao giờ mọi thứ cũng dễ dàng hơn.

Cũng xin nói thêm, là Firebase cho phép authenticate các admins, tức chính là các bạn, những lập trình viên viết code, hoặc bộ phận chuyên nghiệp quản lí cơ sở dữ liệu. Họ sẽ được authenticate dưới quyền admin để quản lí CSDL về các users từ xa. Phần này, tôi sẽ không trình bày gì thêm mà để cho bạn tự khám phá sau khi đã thành thạo.

9. “Khi nào thì tôi nên sử dụng Firebase Authentication và khi nào thì tôi nên tự build một hệ thống của riêng mình?”

Xin nói trước, phần này chỉ mang tính chất tư vấn. Quyết định thực tế còn tùy thuộc vào mục đích của ứng dụng, trình độ, quan điểm và tầm nhìn của lập trình viên. Mọi câu chữ đều chỉ mang tính chất tham khảo.

Nếu bạn là một single dev, hay tổ chức của bạn tuy có quy mô nhỏ, nhưng đang hướng đến việc cung cấp một dịch vụ tương đối lớn, phức tạp, và một người không thể gánh được nhiều thứ, cũng như cơ sở hạ tầng, trang thiết bị cho máy chủ còn ở mức khiêm tốn, và quan trọng hơn hết, BẠN CÓ DỰ ĐỊNH SỬ DỤNG CÁC SẢN PHẨM KHÁC CỦA FIREBASE, thì tôi khuyên bạn nên dùng Firebase Authentication ngay và luôn. Vì như vậy, mọi thứ sẽ được liên kết chặt chẽ còn bạn sẽ tiết kiệm được các nguồn lực như vốn và thời gian.

Còn nếu bạn và tổ chức đang có dự định làm một forum nhỏ, hay một trang blog không hơn không kém, có thể là một blog về tin công nghệ, một blog về lập trình như EITGUIDE chẳng hạn, một blog về nấu ăn, mà chỉ cần users ở mức member và trang web ít có tương tác với user, chẳng hạn chỉ gửi email về các bài đăng mới, thì bạn nên cân nhắc việc tự thiết kế hệ thống, cho dù là bạn hỗ trợ trực tiếp đăng kí bằng email và mật khẩu, hay dùng nhờ Facebook, Twitter.

###################################

Qua ba bài viết về Firebase Authentication, tôi hi vọng các bạn đã có cái nhìn tổng quan và có phần chi tiết về dịch vụ này, cũng như có thể tiếp cận, thực hành bước đầu tích hợp FA vào hệ thống và ứng dụng của bạn. Sắp tới, tôi sẽ tiếp tục giới thiệu các sản phẩm khác của Firebase. Hẹn gặp lại các bạn. Happy coding.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.