了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Xử lý lỗi xác thực nền tảng Apple của Firebase

Nếu lệnh gọi lại hoàn thành trên các phương thức Xác thực nhận được đối số NSError không phải là nil, thì đã xảy ra lỗi. Để chuyển đến logic xử lý lỗi thích hợp trong mã sản xuất của bạn, hãy kiểm tra mã lỗi đối với các lỗi phổ biến và các lỗi cụ thể của phương pháp được liệt kê bên dưới.

Một số lỗi có thể được giải quyết bằng các hành động cụ thể của người dùng, ví dụ: FIRAuthErrorCodeUserTokenExpired có thể được giải quyết bằng cách đăng nhập lại cho người dùng và FIRAuthErrorCodeWrongPassword bằng cách yêu cầu người dùng cung cấp mật khẩu phù hợp.

Ngoại trừ trường hợp FIRAuthErrorCodeNetworkError hoặc FIRAuthErrorCodeTooManyRequests , việc thử lại một thao tác không thành công với cùng các đối số sẽ không bao giờ thành công. Không đưa ra giả định về việc liệu hoạt động có hiệu lực ở phía máy chủ hay không.

Khi điều tra hoặc ghi lại lỗi, hãy xem lại từ điển userInfo . FIRAuthErrorNameKey chứa một chuỗi tên lỗi đa nền tảng có thể được sử dụng để xác định lỗi. NSLocalizedDescriptionKey chứa một mô tả về lỗi. Mô tả này dành cho nhà phát triển, không phải cho người dùng. NSUnderlyingErrorKey chứa lỗi cơ bản gây ra lỗi được đề cập, nếu có lỗi cơ bản.

Ngoài các trường chính được liệt kê ở trên, có thể có các trường khác trong từ điển userInfo mà bạn có thể thấy hữu ích khi chẩn đoán lỗi.

Mã lỗi chung cho tất cả các phương thức API

Mã số Nghĩa
FIRAuthErrorCodeNetworkError Cho biết đã xảy ra lỗi mạng trong quá trình hoạt động.
FIRAuthErrorCodeUserNotFound Cho biết tài khoản người dùng không được tìm thấy. Điều này có thể xảy ra nếu tài khoản người dùng đã bị xóa.
FIRAuthErrorCodeUserTokenExpired Cho biết mã thông báo của người dùng hiện tại đã hết hạn, ví dụ: người dùng có thể đã thay đổi mật khẩu tài khoản trên một thiết bị khác. Bạn phải nhắc người dùng đăng nhập lại trên thiết bị này.
FIRAuthErrorCodeTooManyRequests Cho biết rằng yêu cầu đã bị chặn sau khi một số lượng yêu cầu bất thường đã được thực hiện từ thiết bị của người gọi đến máy chủ Xác thực Firebase. Thử lại sau một thời gian.
FIRAuthErrorCodeInvalidAPIKey Cho biết ứng dụng đã được định cấu hình bằng khóa API không hợp lệ.
FIRAuthErrorCodeAppNotAuthorized Cho biết Ứng dụng không được phép sử dụng Xác thực Firebase bằng Khóa API được cung cấp. chuyển đến Bảng điều khiển API của Google và kiểm tra trong tab thông tin xác thực xem khóa API bạn đang sử dụng có ID gói ứng dụng của bạn được đưa vào danh sách trắng hay không.
FIRAuthErrorCodeKeychainError Cho biết đã xảy ra lỗi khi truy cập chuỗi khóa. Các NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey trong từ điển NSError.userInfo sẽ chứa thêm thông tin về lỗi gặp phải.
FIRAuthErrorCodeInternalError Cho biết đã xảy ra lỗi nội bộ. Vui lòng báo cáo lỗi với toàn bộ đối tượng NSError .

Mã lỗi cụ thể của phương pháp

FIRAuth

fetchProvidersForEmail: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeInvalidEmail Cho biết địa chỉ email không đúng định dạng.

signInWithEmail: mật khẩu: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeOperationNotAllowed Cho biết rằng tài khoản email và mật khẩu không được kích hoạt. Bật chúng trong phần Auth của bảng điều khiển Firebase .
FIRAuthErrorCodeInvalidEmail Cho biết địa chỉ email không đúng định dạng.
FIRAuthErrorCodeUserDisabled Cho biết tài khoản của người dùng bị vô hiệu hóa.
FIRAuthErrorCodeWrongPassword Cho biết người dùng đã cố gắng đăng nhập bằng mật khẩu sai.

signInWithCredential: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeInvalidCredential Cho biết thông tin xác thực được cung cấp không hợp lệ. Điều này có thể xảy ra nếu nó đã hết hạn hoặc nó không đúng định dạng.
FIRAuthErrorCodeInvalidEmail Cho biết địa chỉ email không đúng định dạng, nếu thông tin xác thực thuộc loại EmailPasswordAuthCredential .
FIRAuthErrorCodeOperationNotAllowed Cho biết rằng các tài khoản có nhà cung cấp danh tính được đại diện bởi thông tin đăng nhập không được bật. Bật chúng trong phần Auth của bảng điều khiển Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Cho biết email được xác nhận bằng thông tin xác thực (ví dụ: email trong mã thông báo truy cập Facebook) đã được tài khoản hiện có sử dụng, tài khoản đó không thể được xác thực bằng phương thức đăng nhập này. Gọi fetchProvidersForEmail cho email của người dùng này và sau đó nhắc họ đăng nhập bằng bất kỳ nhà cung cấp dịch vụ đăng nhập nào được trả về. Lỗi này sẽ chỉ xảy ra nếu cài đặt "Một tài khoản cho mỗi địa chỉ email" được bật trong bảng điều khiển Firebase , trong cài đặt Xác thực.
FIRAuthErrorCodeUserDisabled Cho biết tài khoản của người dùng bị vô hiệu hóa.
FIRAuthErrorCodeWrongPassword Cho biết người dùng đã cố gắng đăng nhập bằng mật khẩu sai, nếu thông tin đăng nhập thuộc loại EmailPasswordAuthCredential .

signInAno nặc danhWithCompletion:

Mã số Nghĩa
FIRAuthErrorCodeOperationNotAllowed Cho biết rằng tài khoản ẩn danh không được kích hoạt. Bật chúng trong phần Auth của bảng điều khiển Firebase .

signInWithCustomToken: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeInvalidCustomToken Cho biết lỗi xác thực với mã thông báo tùy chỉnh.
FIRAuthErrorCodeCustomTokenMismatch Cho biết tài khoản dịch vụ và khóa API thuộc về các dự án khác nhau.

createUserWithEmail: mật khẩu: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeInvalidEmail Cho biết địa chỉ email không đúng định dạng.
FIRAuthErrorCodeEmailAlreadyInUse Cho biết email được sử dụng để cố gắng đăng ký đã tồn tại. Gọi fetchProvidersForEmail để kiểm tra xem người dùng đó đã sử dụng cơ chế đăng nhập nào và nhắc người dùng đăng nhập bằng một trong những cơ chế đó.
FIRAuthErrorCodeOperationNotAllowed Cho biết rằng tài khoản email và mật khẩu không được kích hoạt. Bật chúng trong phần Xác thực của bảng điều khiển Firebase .
FIRAuthErrorCodeWeakPassword Cho biết nỗ lực đặt mật khẩu được coi là quá yếu. Trường NSLocalizedFailureReasonErrorKey trong đối tượng từ điển NSError.userInfo sẽ chứa giải thích chi tiết hơn có thể được hiển thị cho người dùng.

đăng xuất:

Mã số Nghĩa
FIRAuthErrorCodeKeychainError Đã chỉ ra lỗi đã xảy ra khi truy cập chuỗi khóa. Các NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey trong từ điển NSError.userInfo sẽ chứa thêm thông tin về lỗi gặp phải.

FIRUser

Các lỗi thường gặp đối với hoạt động của FIRUser

Mã số Nghĩa
FIRAuthErrorCodeInvalidUserToken Cho biết rằng mã thông báo làm mới của người dùng đã đăng nhập, chứa thông tin phiên, không hợp lệ. Bạn phải nhắc người dùng đăng nhập lại trên thiết bị này.
FIRAuthErrorCodeUserDisabled Cho biết tài khoản của người dùng đã bị vô hiệu hóa và không thể sử dụng được nữa cho đến khi được bật lại từ bên trong bảng Người dùng trong bảng điều khiển Firebase.

reauthenticateWithCredential: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeInvalidCredential Cho biết thông tin xác thực được cung cấp không hợp lệ. Điều này có thể xảy ra nếu nó đã hết hạn hoặc nó không đúng định dạng.
FIRAuthErrorCodeInvalidEmail Cho biết địa chỉ email không đúng định dạng, nếu thông tin xác thực thuộc loại EmailPasswordAuthCredential .
FIRAuthErrorCodeWrongPassword Cho biết người dùng đã cố gắng xác thực lại bằng mật khẩu không chính xác, nếu thông tin đăng nhập thuộc loại EmailPasswordAuthCredential .
FIRAuthErrorCodeUserMismatch Cho biết rằng một nỗ lực đã được thực hiện để xác thực lại với một người dùng không phải là người dùng hiện tại.
FIRAuthErrorCodeOperationNotAllowed Cho biết rằng các tài khoản có nhà cung cấp danh tính được đại diện bởi thông tin đăng nhập không được bật. Bật chúng trong phần Auth của bảng điều khiển Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Cho biết email được xác nhận bằng thông tin xác thực (ví dụ: email trong mã thông báo truy cập Facebook) đã được tài khoản hiện có sử dụng, tài khoản đó không thể được xác thực lại bằng phương thức đăng nhập này. Gọi fetchProvidersForEmail cho email của người dùng này và sau đó nhắc họ đăng nhập bằng bất kỳ nhà cung cấp dịch vụ đăng nhập nào được trả về. Lỗi này sẽ chỉ xảy ra nếu cài đặt "Một tài khoản cho mỗi địa chỉ email" được bật trong bảng điều khiển Firebase , trong cài đặt Xác thực.
FIRAuthErrorCodeUserDisabled Cho biết tài khoản của người dùng bị vô hiệu hóa.

updateEmail: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeEmailAlreadyInUse Cho biết email đã được một tài khoản khác sử dụng.
FIRAuthErrorCodeInvalidEmail Cho biết địa chỉ email không đúng định dạng.
FIRAuthErrorCodeRequiresRecentLogin Cập nhật email của người dùng là một hoạt động nhạy cảm về bảo mật yêu cầu người dùng đăng nhập gần đây. Lỗi này cho biết người dùng đã không đăng nhập đủ gần đây. Để giải quyết, xác thực lại người dùng bằng cách gọi reauthenticateWithCredential:completion: trên FIRUser .

updatePassword: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeOperationNotAllowed Cho biết quản trị viên đã vô hiệu hóa đăng nhập bằng nhà cung cấp danh tính được chỉ định.
FIRAuthErrorCodeRequiresRecentLogin Cập nhật mật khẩu của người dùng là một hoạt động nhạy cảm về bảo mật yêu cầu người dùng đăng nhập gần đây. Lỗi này cho biết người dùng đã không đăng nhập đủ gần đây. Để giải quyết, xác thực lại người dùng bằng cách gọi reauthenticateWithCredential:completion: trên FIRUser .
FIRAuthErrorCodeWeakPassword Cho biết nỗ lực đặt mật khẩu được coi là quá yếu. Trường NSLocalizedFailureReasonErrorKey trong đối tượng từ điển NSError.userInfo sẽ chứa giải thích chi tiết hơn có thể được hiển thị cho người dùng.

linkWithCredential: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeProviderAlreadyLinked Cho biết nỗ lực liên kết một nhà cung cấp thuộc loại đã được liên kết với tài khoản này.
FIRAuthErrorCodeCredentialAlreadyInUse Cho biết nỗ lực liên kết với thông tin đăng nhập đã được liên kết với tài khoản Firebase khác.
FIRAuthErrorCodeOperationNotAllowed Cho biết rằng các tài khoản có nhà cung cấp danh tính được đại diện bởi thông tin đăng nhập không được bật. Bật chúng trong phần Auth của bảng điều khiển Firebase .

Phương thức này cũng có thể trả về các mã lỗi được liên kết với updateEmail:completion:updatePassword:completion: trên FIRUser .

unlinkFromProvider: hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeNoSuchProvider Cho biết nỗ lực hủy liên kết nhà cung cấp không được liên kết với tài khoản.
FIRAuthErrorCodeRequiresRecentLogin Cập nhật email là một hoạt động nhạy cảm về bảo mật yêu cầu người dùng đăng nhập gần đây. Lỗi này cho biết người dùng đã không đăng nhập đủ gần đây. Để giải quyết, xác thực lại người dùng bằng cách gọi reauthenticateWithCredential:completion: trên FIRUser .

sendEmailVerificationWithCompletion:

Mã số Nghĩa
FIRAuthErrorCodeUserNotFound Cho biết tài khoản người dùng không được tìm thấy.

deleteWithCompletion:

Mã số Nghĩa
FIRAuthErrorCodeRequiresRecentLogin Xóa tài khoản người dùng là một hoạt động nhạy cảm về bảo mật yêu cầu người dùng đăng nhập gần đây. Lỗi này cho biết người dùng đã không đăng nhập đủ gần đây. Để giải quyết, xác thực lại người dùng bằng cách gọi reauthenticateWithCredential:completion: trên FIRUser .