Xử lý lỗi xác thực nền tảng Apple 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ác 0 thì đã xảy ra lỗi. Để gửi đế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 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 người dùng và FIRAuthErrorCodeWrongPassword bằng cách yêu cầu người dùng cung cấp đúng mật khẩu.

Ngoại trừ trường hợp FIRAuthErrorCodeNetworkError hoặc FIRAuthErrorCodeTooManyRequests , việc thử lại một thao tác thất bại 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 hoạt động có hiệu lực ở phía máy chủ hay không.

Khi điều tra hoặc ghi nhật ký lỗi, hãy xem lại từ điển userInfo . FIRAuthErrorNameKey chứa 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ả lỗi. Mô tả này dành cho nhà phát triển, không phải 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 phổ biến cho tất cả các phương pháp 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 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 có số lượng yêu cầu bất thường được thực hiện từ thiết bị người gọi đến máy chủ Xác thực Firebase. Hãy 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. đi tới 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ó nằm trong danh sách cho phép ID gói ứng dụng của bạn hay không.
FIRAuthErrorCodeKeychainError Cho biết đã xảy ra lỗi khi truy cập vào chuỗi khóa. Các trường NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey trong từ điển NSError.userInfo sẽ chứa nhiều thông tin hơn 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

tìm nạpProvidersForEmail: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 tài khoản email và mật khẩu chưa được kích hoạt. Kích hoạt chúng trong phần Xác thực 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ố đă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 bị sai đị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 xác thực không được bật. Kích hoạt chúng trong phần Xác thực 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 tại sử dụng và không thể xác thực bằng phương thức đăng nhập này. Gọi fetchProvidersForEmail để biết email của người dùng này rồi 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ố đăng nhập bằng mật khẩu sai, nếu thông tin xác thực thuộc loại EmailPasswordAuthCredential .

signInAnonymousWithCompletion:

Mã số Nghĩa
FIRAuthErrorCodeOperationNotAllowed Cho biết tài khoản ẩn danh không được kích hoạt. Kích hoạt chúng trong phần Xác thực 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:password:completion:

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 để thử đă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 tài khoản email và mật khẩu chưa được kích hoạt. Kích hoạ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 lời 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 Cho biết đã xảy ra lỗi khi truy cập vào chuỗi khóa. Các trường NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey trong từ điển NSError.userInfo sẽ chứa nhiều thông tin hơn 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ừ trong bảng Người dùng trong bảng điều khiển Firebase.

xác thực lạiWithCredential: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 bị sai đị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 xác thực thuộc loại EmailPasswordAuthCredential .
FIRAuthErrorCodeUserMismatch Cho biết rằng đã có nỗ lực xác thực lại với 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 xác thực không được bật. Kích hoạt chúng trong phần Xác thực 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 tại sử dụng và không thể xác thực lại bằng phương thức đăng nhập này. Gọi fetchProvidersForEmail để biết email của người dùng này rồi 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.

cập nhậtEmail:hoàn thành:

Mã số Nghĩa
FIRAuthErrorCodeEmailAlreadyInUse Cho biết email đã được sử dụng bởi một tài khoản khác.
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 phải đăng nhập gần đây. Lỗi này cho thấy người dùng chưa đăng nhập đủ gần đây. Để giải quyết, hãy xác thực lại người dùng bằng cách gọi reauthenticateWithCredential:completion: trên FIRUser .

cập nhậtMật khẩu: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 thao tác nhạy cảm về bảo mật yêu cầu người dùng phải đăng nhập gần đây. Lỗi này cho thấy người dùng chưa đăng nhập đủ gần đây. Để giải quyết, hãy 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 lời 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 xác thực đã đượ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 xác thực không được bật. Kích hoạt chúng trong phần Xác thực của bảng điều khiển Firebase .

Phương pháp này cũng có thể trả về mã lỗi liên quan đến 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 mộ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 phải đăng nhập gần đây. Lỗi này cho thấy người dùng chưa đăng nhập gần đây. Để giải quyết, hãy xác thực lại người dùng bằng cách gọi reauthenticateWithCredential:completion: trên FIRUser .

gửiEmailVerificationWithCompletion:

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

xóaWithCompletion:

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