จัดการข้อผิดพลาดในการตรวจสอบสิทธิ์ของแพลตฟอร์ม Firebase บน Apple

หากการเรียกกลับเสร็จสมบูรณ์ในเมธอด Authentication ได้รับอาร์กิวเมนต์ NSError ที่ ไม่ใช่ ศูนย์ เกิดข้อผิดพลาด เพื่อส่งต่อไปยังการจัดการข้อผิดพลาดที่เหมาะสม ในรหัสการผลิตของคุณ ตรวจสอบรหัสข้อผิดพลาดเทียบกับข้อผิดพลาดที่พบบ่อย และ ตามรายการข้อผิดพลาดที่ระบุด้านล่าง

ข้อผิดพลาดบางอย่างสามารถแก้ไขได้ด้วยการดำเนินการบางอย่างของผู้ใช้ เช่น FIRAuthErrorCodeUserTokenExpired สามารถแก้ปัญหาได้โดยการลงชื่อเข้าใช้ และFIRAuthErrorCodeWrongPassword ด้วยการขอให้ผู้ใช้ระบุ รหัสผ่านที่ถูกต้อง

ยกเว้นในกรณีของ FIRAuthErrorCodeNetworkError หรือ FIRAuthErrorCodeTooManyRequests กำลังลองดำเนินการที่ล้มเหลวอีกครั้งด้วยรหัสเดิม จะไม่มีทางประสบความสำเร็จได้ ไม่ต้องตั้งมั่นว่าการทำงาน ที่มีผลกับฝั่งเซิร์ฟเวอร์

ขณะตรวจสอบหรือบันทึกข้อผิดพลาด โปรดตรวจสอบพจนานุกรม userInfo FIRAuthErrorNameKey มีสตริงชื่อข้อผิดพลาดข้ามแพลตฟอร์มที่สามารถ ซึ่งใช้ในการระบุข้อผิดพลาด NSLocalizedDescriptionKey มีคำอธิบายข้อผิดพลาด ช่วงเวลานี้ คำอธิบายนั้นมีไว้สำหรับนักพัฒนาซอฟต์แวร์ ไม่ใช่สำหรับผู้ใช้ NSUnderlyingErrorKey มีข้อผิดพลาดที่เกี่ยวข้องที่ทำให้เกิดข้อผิดพลาดใน หากมีข้อผิดพลาดที่เกี่ยวข้อง

นอกจากฟิลด์หลักที่แสดงด้านบนแล้ว ยังมีฟิลด์อื่นๆ ใน พจนานุกรม userInfo ที่คุณอาจพบว่ามีประโยชน์ในการวินิจฉัยข้อผิดพลาด

รหัสข้อผิดพลาดที่พบบ่อยในเมธอด API ทั้งหมด

รหัส ความหมาย
FIRAuthErrorCodeNetworkError บ่งบอกว่าเกิดข้อผิดพลาดเกี่ยวกับเครือข่ายระหว่างการดำเนินการ
FIRAuthErrorCodeUserNotFound บ่งบอกว่าไม่พบบัญชีผู้ใช้ กรณีนี้อาจเกิดขึ้นหากบัญชีผู้ใช้ถูกลบไปแล้ว
FIRAuthErrorCodeUserTokenExpired ระบุว่าโทเค็นของผู้ใช้ปัจจุบันหมดอายุ เช่น ผู้ใช้อาจเปลี่ยนรหัสผ่านบัญชีในอุปกรณ์อื่น คุณต้องแจ้งให้ผู้ใช้ลงชื่อเข้าใช้อีกครั้งในอุปกรณ์นี้
FIRAuthErrorCodeTooManyRequests บ่งบอกว่าคำขอถูกบล็อกหลังจากมีการส่งคำขอจากอุปกรณ์ที่เรียกไปยังเซิร์ฟเวอร์ของ Firebase Authentication มากผิดปกติ โปรดลองอีกครั้งในภายหลัง
FIRAuthErrorCodeInvalidAPIKey บ่งบอกว่าแอปพลิเคชันได้รับการกำหนดค่าด้วยคีย์ API ที่ไม่ถูกต้อง
FIRAuthErrorCodeAppNotAuthorized ระบุว่าแอปไม่ได้รับอนุญาตให้ใช้การตรวจสอบสิทธิ์ Firebase ด้วยคีย์ API ที่ให้มา ไปที่คอนโซล Google API แล้วตรวจสอบในแท็บข้อมูลเข้าสู่ระบบว่าคีย์ API ที่คุณใช้มีรหัสชุดของแอปพลิเคชันอยู่ในรายการที่อนุญาตพิเศษ
FIRAuthErrorCodeKeychainError ระบุข้อผิดพลาดที่เกิดขึ้นเมื่อเข้าถึง Keychain ช่อง NSLocalizedFailureReasonErrorKey และ NSUnderlyingErrorKey ในพจนานุกรม NSError.userInfo จะมีข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่พบ
FIRAuthErrorCodeInternalError บ่งบอกว่าเกิดข้อผิดพลาดภายใน โปรดรายงานข้อผิดพลาดพร้อมกับออบเจ็กต์ NSError ทั้งหมด

รหัสข้อผิดพลาดของเมธอด

FIRAuth

checkProvidersForEmail:ความสมบูรณ์:

รหัส ความหมาย
FIRAuthErrorCodeInvalidEmail แสดงว่าอีเมลผิดรูปแบบ

signInWithEmail:รหัสผ่าน:เสร็จสมบูรณ์:

รหัส ความหมาย
FIRAuthErrorCodeOperationNotAllowed ระบุว่าไม่ได้เปิดใช้บัญชีอีเมลและรหัสผ่าน โปรดเปิดใช้ในส่วนการตรวจสอบสิทธิ์ของคอนโซล Firebase
FIRAuthErrorCodeInvalidEmail แสดงว่าอีเมลผิดรูปแบบ
FIRAuthErrorCodeUserDisabled บ่งบอกว่าบัญชีผู้ใช้ถูกปิดใช้งาน
FIRAuthErrorCodeWrongPassword ระบุว่าผู้ใช้พยายามลงชื่อเข้าใช้ด้วยรหัสผ่านที่ไม่ถูกต้อง

signInWithCredential:completion:

รหัส ความหมาย
FIRAuthErrorCodeInvalidCredential ระบุว่าข้อมูลเข้าสู่ระบบที่ระบุไม่ถูกต้อง ซึ่งอาจเกิดขึ้นหากใบอนุญาตหมดอายุหรือมีรูปแบบไม่ถูกต้อง
FIRAuthErrorCodeInvalidEmail บ่งบอกว่าอีเมลมีรูปแบบไม่ถูกต้อง หากข้อมูลเข้าสู่ระบบเป็นประเภท EmailPasswordAuthCredential
FIRAuthErrorCodeOperationNotAllowed ระบุว่าไม่ได้เปิดใช้บัญชีที่มีผู้ให้บริการข้อมูลประจำตัวซึ่งแสดงถึงข้อมูลเข้าสู่ระบบ โปรดเปิดใช้ในส่วนการตรวจสอบสิทธิ์ของคอนโซล Firebase
FIRAuthErrorCodeEmailAlreadyInUse ระบุว่าอีเมลที่ยืนยันด้วยข้อมูลเข้าสู่ระบบ (เช่น อีเมลในโทเค็นเพื่อการเข้าถึงของ Facebook) มีการใช้งานโดยบัญชีที่มีอยู่แล้ว ซึ่งไม่สามารถตรวจสอบสิทธิ์ด้วยวิธีการลงชื่อเข้าใช้นี้ได้ โทรหา fetchProvidersForEmail เพื่อขออีเมลของผู้ใช้รายนี้ แล้วแจ้งให้ลงชื่อเข้าใช้ด้วยผู้ให้บริการการลงชื่อเข้าใช้ที่ส่งคืนมา ระบบจะแสดงข้อผิดพลาดนี้เฉพาะในกรณีที่ตัวเลือก "หนึ่งบัญชีต่อที่อยู่อีเมล" เปิดใช้การตั้งค่าอยู่ในคอนโซล Firebase ในส่วนการตั้งค่า Authentication
FIRAuthErrorCodeUserDisabled บ่งบอกว่าบัญชีผู้ใช้ถูกปิดใช้งาน
FIRAuthErrorCodeWrongPassword ระบุว่าผู้ใช้พยายามลงชื่อเข้าใช้ด้วยรหัสผ่านที่ไม่ถูกต้อง หากข้อมูลเข้าสู่ระบบเป็นประเภท EmailPasswordAuthCredential

ลงชื่อเข้าใช้แบบไม่ระบุชื่อสำเร็จ:

รหัส ความหมาย
FIRAuthErrorCodeOperationNotAllowed ระบุว่าไม่ได้เปิดใช้บัญชีที่ไม่ระบุตัวตน โปรดเปิดใช้ในส่วนการตรวจสอบสิทธิ์ของคอนโซล Firebase

signInWithCustomToken:completion:

รหัส ความหมาย
FIRAuthErrorCodeInvalidCustomToken ระบุข้อผิดพลาดในการตรวจสอบความถูกต้องด้วยโทเค็นที่กำหนดเอง
FIRAuthErrorCodeCustomTokenMismatch ระบุว่าบัญชีบริการและคีย์ API เป็นของโปรเจ็กต์อื่น

createUserWithEmail:รหัสผ่าน:เสร็จสมบูรณ์:

รหัส ความหมาย
FIRAuthErrorCodeInvalidEmail แสดงว่าอีเมลผิดรูปแบบ
FIRAuthErrorCodeEmailAlreadyInUse บ่งบอกว่ามีอีเมลที่ใช้ลงชื่อสมัครใช้อยู่แล้ว โปรดโทรหา fetchProvidersForEmail เพื่อตรวจสอบว่าผู้ใช้ดังกล่าวใช้กลไกการลงชื่อเข้าใช้ใดบ้าง และแจ้งให้ผู้ใช้ลงชื่อเข้าใช้ด้วยกลไกดังกล่าว
FIRAuthErrorCodeOperationNotAllowed ระบุว่าไม่ได้เปิดใช้บัญชีอีเมลและรหัสผ่าน เปิดใช้ในส่วน Authentication ของคอนโซล Firebase
FIRAuthErrorCodeWeakPassword ระบุการพยายามตั้งรหัสผ่านที่ถือว่าไม่รัดกุมเกินไป ฟิลด์ NSLocalizedFailureReasonErrorKey ในออบเจ็กต์พจนานุกรม NSError.userInfo จะมีคำอธิบายโดยละเอียดเพิ่มเติมที่สามารถแสดงต่อผู้ใช้

ออกจากระบบ:

รหัส ความหมาย
FIRAuthErrorCodeKeychainError ระบุว่าเกิดข้อผิดพลาดเมื่อเข้าถึง Keychain ช่อง NSLocalizedFailureReasonErrorKey และ NSUnderlyingErrorKey ในพจนานุกรม NSError.userInfo จะมีข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่พบ

FIRUser

ข้อผิดพลาดที่พบบ่อยสำหรับการดำเนินการของ FIRUser

รหัส ความหมาย
FIRAuthErrorCodeInvalidUserToken บ่งบอกว่าโทเค็นการรีเฟรชของผู้ใช้ที่ลงชื่อเข้าใช้ซึ่งมีข้อมูลเซสชันไม่ถูกต้อง คุณต้องแจ้งให้ผู้ใช้ลงชื่อเข้าใช้อีกครั้งในอุปกรณ์นี้
FIRAuthErrorCodeUserDisabled แสดงว่าบัญชีของผู้ใช้ถูกปิดใช้และจะใช้ไม่ได้จนกว่าจะเปิดใช้อีกครั้งจากภายในแผงผู้ใช้ในคอนโซล Firebase

reauthWithCredential:completion:

รหัส ความหมาย
FIRAuthErrorCodeInvalidCredential ระบุว่าข้อมูลเข้าสู่ระบบที่ระบุไม่ถูกต้อง ซึ่งอาจเกิดขึ้นหากใบอนุญาตหมดอายุหรือมีรูปแบบไม่ถูกต้อง
FIRAuthErrorCodeInvalidEmail บ่งบอกว่าอีเมลมีรูปแบบไม่ถูกต้อง หากข้อมูลเข้าสู่ระบบเป็นประเภท EmailPasswordAuthCredential
FIRAuthErrorCodeWrongPassword ระบุว่าผู้ใช้พยายามตรวจสอบสิทธิ์อีกครั้งด้วยรหัสผ่านที่ไม่ถูกต้อง หากข้อมูลเข้าสู่ระบบเป็นประเภท EmailPasswordAuthCredential
FIRAuthErrorCodeUserMismatch ระบุว่ามีการพยายามตรวจสอบสิทธิ์อีกครั้งกับผู้ใช้ที่ไม่ใช่ผู้ใช้ปัจจุบัน
FIRAuthErrorCodeOperationNotAllowed ระบุว่าไม่ได้เปิดใช้บัญชีที่มีผู้ให้บริการข้อมูลประจำตัวซึ่งแสดงถึงข้อมูลเข้าสู่ระบบ โปรดเปิดใช้ในส่วนการตรวจสอบสิทธิ์ของคอนโซล Firebase
FIRAuthErrorCodeEmailAlreadyInUse ระบุว่าอีเมลที่ยืนยันด้วยข้อมูลเข้าสู่ระบบ (เช่น อีเมลในโทเค็นเพื่อการเข้าถึงของ Facebook) มีการใช้งานโดยบัญชีที่มีอยู่แล้ว ซึ่งไม่สามารถตรวจสอบสิทธิ์ซ้ำโดยใช้วิธีการลงชื่อเข้าใช้นี้ได้ โทรหา fetchProvidersForEmail เพื่อขออีเมลของผู้ใช้รายนี้ แล้วแจ้งให้ลงชื่อเข้าใช้ด้วยผู้ให้บริการการลงชื่อเข้าใช้ที่ส่งคืนมา ระบบจะแสดงข้อผิดพลาดนี้เฉพาะในกรณีที่ตัวเลือก "หนึ่งบัญชีต่อที่อยู่อีเมล" เปิดใช้การตั้งค่าอยู่ในคอนโซล Firebase ในส่วนการตั้งค่า Authentication
FIRAuthErrorCodeUserDisabled บ่งบอกว่าบัญชีผู้ใช้ถูกปิดใช้งาน

อัปเดตอีเมล:เสร็จสมบูรณ์:

รหัส ความหมาย
FIRAuthErrorCodeEmailAlreadyInUse บ่งบอกว่ามีบัญชีอื่นใช้งานอีเมลนี้แล้ว
FIRAuthErrorCodeInvalidEmail แสดงว่าอีเมลผิดรูปแบบ
FIRAuthErrorCodeRequiresRecentLogin การอัปเดตอีเมลของผู้ใช้เป็นการดำเนินการที่มีความละเอียดอ่อนด้านความปลอดภัย ซึ่งจำเป็นต้องเข้าสู่ระบบจากผู้ใช้ครั้งล่าสุด ข้อผิดพลาดนี้บ่งบอกว่าผู้ใช้ไม่ได้ลงชื่อเข้าใช้เมื่อเร็วๆ นี้ ในการแก้ปัญหา ให้ตรวจสอบสิทธิ์ผู้ใช้อีกครั้งโดยเรียกใช้ reauthenticateWithCredential:completion: ใน FIRUser

อัปเดตรหัสผ่าน:ข้อมูลที่ครบถ้วน:

รหัส ความหมาย
FIRAuthErrorCodeOperationNotAllowed ระบุว่าผู้ดูแลระบบปิดใช้การลงชื่อเข้าใช้ด้วยผู้ให้บริการข้อมูลประจำตัวที่ระบุ
FIRAuthErrorCodeRequiresRecentLogin การอัปเดตรหัสผ่านของผู้ใช้เป็นการดำเนินการที่มีความละเอียดอ่อนด้านความปลอดภัย ซึ่งต้องมีการเข้าสู่ระบบครั้งล่าสุดจากผู้ใช้ ข้อผิดพลาดนี้บ่งบอกว่าผู้ใช้ไม่ได้ลงชื่อเข้าใช้เมื่อเร็วๆ นี้ ในการแก้ปัญหา ให้ตรวจสอบสิทธิ์ผู้ใช้อีกครั้งโดยเรียกใช้ reauthenticateWithCredential:completion: ใน FIRUser
FIRAuthErrorCodeWeakPassword ระบุการพยายามตั้งรหัสผ่านที่ถือว่าไม่รัดกุมเกินไป ฟิลด์ NSLocalizedFailureReasonErrorKey ในออบเจ็กต์พจนานุกรม NSError.userInfo จะมีคำอธิบายโดยละเอียดเพิ่มเติมที่สามารถแสดงต่อผู้ใช้

linkWithCredential:completion:

รหัส ความหมาย
FIRAuthErrorCodeProviderAlreadyLinked ระบุความพยายามที่จะลิงก์ผู้ให้บริการประเภทหนึ่งที่ลิงก์กับบัญชีนี้แล้ว
FIRAuthErrorCodeCredentialAlreadyInUse ระบุความพยายามในการลิงก์กับข้อมูลเข้าสู่ระบบที่เคยลิงก์กับบัญชี Firebase อื่นแล้ว
FIRAuthErrorCodeOperationNotAllowed ระบุว่าไม่ได้เปิดใช้บัญชีที่มีผู้ให้บริการข้อมูลประจำตัวซึ่งแสดงถึงข้อมูลเข้าสู่ระบบ โปรดเปิดใช้ในส่วนการตรวจสอบสิทธิ์ของคอนโซล Firebase

วิธีการนี้อาจแสดงรหัสข้อผิดพลาดที่เชื่อมโยงกับ updateEmail:completion: และ updatePassword:completion: ในวันที่ FIRUser

ยกเลิกการลิงก์FromProvider:completion:

รหัส ความหมาย
FIRAuthErrorCodeNoSuchProvider ระบุความพยายามในการยกเลิกการลิงก์ผู้ให้บริการที่ไม่ได้ลิงก์กับบัญชี
FIRAuthErrorCodeRequiresRecentLogin การอัปเดตอีเมลเป็นการดำเนินการที่มีความละเอียดอ่อนด้านความปลอดภัย ซึ่งต้องมีการเข้าสู่ระบบจากผู้ใช้ครั้งล่าสุด ข้อผิดพลาดนี้บ่งบอกว่าผู้ใช้ไม่ได้ลงชื่อเข้าใช้เมื่อเร็วๆ นี้ ในการแก้ปัญหา ให้ตรวจสอบสิทธิ์ผู้ใช้อีกครั้งโดยเรียกใช้ reauthenticateWithCredential:completion: ใน FIRUser

sendEmail VerificationWithComplete:

รหัส ความหมาย
FIRAuthErrorCodeUserNotFound บ่งบอกว่าไม่พบบัญชีผู้ใช้

ลบด้วยเสร็จสมบูรณ์:

รหัส ความหมาย
FIRAuthErrorCodeRequiresRecentLogin การลบบัญชีผู้ใช้เป็นการดำเนินการที่มีความละเอียดอ่อนด้านความปลอดภัย ซึ่งต้องมีการเข้าสู่ระบบจากผู้ใช้ครั้งล่าสุด ข้อผิดพลาดนี้บ่งบอกว่าผู้ใช้ไม่ได้ลงชื่อเข้าใช้เมื่อเร็วๆ นี้ ในการแก้ปัญหา ให้ตรวจสอบสิทธิ์ผู้ใช้อีกครั้งโดยเรียกใช้ reauthenticateWithCredential:completion: ใน FIRUser