Bạn có thể tích hợp Firebase Authentication với một hệ thống xác thực tuỳ chỉnh bằng cách sửa đổi máy chủ xác thực để tạo mã thông báo đã ký tuỳ chỉnh khi người dùng đăng nhập thành công. Ứng dụng của bạn sẽ nhận được mã thông báo này và sử dụng mã thông báo đó để xác thực với Firebase.
Trước khi bắt đầu
- Tạo một dự án Firebase và đăng ký ứng dụng nếu bạn chưa làm.
-
Sử dụng Trình quản lý gói Swift để cài đặt và quản lý các phần phụ thuộc của Firebase.
- Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy chuyển đến File (Tệp) > Add Packages (Thêm gói).
- Khi được nhắc, hãy thêm kho lưu trữ SDK nền tảng Apple của Firebase:
- Chọn thư viện Firebase Authentication.
- Thêm cờ
-ObjCvào phần Other Linker Flags (Cờ trình liên kết khác) trong phần cài đặt bản dựng của mục tiêu. - Khi hoàn tất, Xcode sẽ tự động bắt đầu phân giải và tải các phần phụ thuộc xuống ở chế độ nền.
https://github.com/firebase/firebase-ios-sdk.git
- Lấy khoá máy chủ của dự án:
-
Trong bảng điều khiển Firebase, hãy chuyển đến phần cài đặt
Settings > thẻ Service accounts. - Ở cuối phần Firebase Admin SDK (SDK quản trị Firebase), hãy nhấp vào Generate New Private Key (Tạo khoá riêng tư mới).
- Cặp khoá công khai/riêng tư của tài khoản dịch vụ mới sẽ tự động được lưu trên máy tính của bạn. Sao chép tệp này vào máy chủ xác thực.
-
Trong bảng điều khiển Firebase, hãy chuyển đến phần cài đặt
Xác thực bằng Firebase
- Nhập mô-đun
FirebaseCoretrongUIApplicationDelegate, cũng như mọi mô-đun Firebase khác mà đại diện ứng dụng của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Định cấu hình một
FirebaseAppthực thể dùng chung trong phương thứcapplication(_:didFinishLaunchingWithOptions:)của đại diện ứng dụng:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Nếu đang sử dụng SwiftUI, bạn phải tạo một đại diện ứng dụng và đính kèm đại diện đó
vào cấu trúc
Appthông quaUIApplicationDelegateAdaptorhoặcNSApplicationDelegateAdaptor. Bạn cũng phải tắt tính năng hoán đổi đại diện ứng dụng. Để biết thêm thông tin, hãy xem hướng dẫn về SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Khi người dùng đăng nhập vào ứng dụng của bạn, hãy gửi thông tin đăng nhập của họ (ví dụ: tên người dùng và mật khẩu) đến máy chủ xác thực. Máy chủ của bạn sẽ kiểm tra thông tin đăng nhập và trả về mã thông báo tuỳ chỉnh nếu thông tin đó hợp lệ.
- Sau khi nhận được mã thông báo tuỳ chỉnh từ máy chủ xác thực, hãy truyền mã thông báo đó
đến
signInWithCustomTokenđể đăng nhập người dùng:Swift
Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in // ... }
Objective-C
[[FIRAuth auth] signInWithCustomToken:customToken completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Các bước tiếp theo
Sau khi người dùng đăng nhập lần đầu tiên, một tài khoản người dùng mới sẽ được tạo và liên kết với thông tin đăng nhập – tức là tên người dùng và mật khẩu, số điện thoại hoặc thông tin nhà cung cấp dịch vụ xác thực – mà người dùng đã đăng nhập. Tài khoản mới này được lưu trữ trong dự án Firebase của bạn và có thể dùng để xác định người dùng trên mọi ứng dụng trong dự án, bất kể cách người dùng đăng nhập.
-
Trong ứng dụng, bạn có thể lấy thông tin cơ bản về hồ sơ của người dùng từ đối tượng
User. Xem bài viết Quản lý người dùng. Trong Firebase Realtime Database và Cloud Storage Quy tắc bảo mật, bạn có thể lấy mã nhận dạng người dùng riêng biệt của người dùng đã đăng nhập từ biến
auth, và sử dụng mã nhận dạng đó để kiểm soát dữ liệu mà người dùng có thể truy cập.
Bạn có thể cho phép người dùng đăng nhập vào ứng dụng bằng nhiều nhà cung cấp dịch vụ xác thực bằng cách liên kết thông tin đăng nhập của nhà cung cấp dịch vụ xác thực với tài khoản người dùng hiện có.
Để đăng xuất người dùng, hãy gọi
signOut:.
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
Bạn cũng có thể muốn thêm mã xử lý lỗi cho toàn bộ các lỗi xác thực lỗi. Xem bài viết Xử lý lỗi.