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

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

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

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

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

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

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

รหัส ความหมาย
FIRAuthErrorCodeNetworkError บ่งบอกว่าเกิดข้อผิดพลาดเกี่ยวกับเครือข่ายระหว่างการดำเนินการ
FIRAuthErrorCodeUserNotFound บ่งบอกว่าไม่พบบัญชีผู้ใช้ กรณีนี้อาจเกิดขึ้นหากบัญชีผู้ใช้ถูกลบไปแล้ว
FIRAuthErrorCodeUserTokenExpired ระบุว่าโทเค็นของผู้ใช้ปัจจุบันหมดอายุ เช่น ผู้ใช้อาจเปลี่ยนรหัสผ่านบัญชีในอุปกรณ์อื่น คุณต้องแจ้งให้ผู้ใช้ลงชื่อเข้าใช้อีกครั้งในอุปกรณ์นี้
FIRAuthErrorCodeTooManyRequests บ่งบอกว่าคำขอถูกบล็อกหลังจากมีการส่งคำขอจากอุปกรณ์ที่เรียกใช้ไปยังเซิร์ฟเวอร์การตรวจสอบสิทธิ์ Firebase มากผิดปกติ โปรดลองอีกครั้งในภายหลัง
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 เพื่อขออีเมลของผู้ใช้รายนี้ แล้วแจ้งให้ลงชื่อเข้าใช้ด้วยผู้ให้บริการการลงชื่อเข้าใช้ที่ส่งคืนมา ข้อผิดพลาดนี้จะเกิดขึ้นหากเปิดใช้การตั้งค่า "1 บัญชีต่ออีเมล" ในคอนโซล Firebase ในการตั้งค่าการตรวจสอบสิทธิ์เท่านั้น
FIRAuthErrorCodeUserDisabled บ่งบอกว่าบัญชีผู้ใช้ถูกปิดใช้งาน
FIRAuthErrorCodeWrongPassword ระบุว่าผู้ใช้พยายามลงชื่อเข้าใช้ด้วยรหัสผ่านที่ไม่ถูกต้อง หากข้อมูลเข้าสู่ระบบเป็นประเภท EmailPasswordAuthCredential

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

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

signInWithCustomToken:completion:

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

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

รหัส ความหมาย
FIRAuthErrorCodeInvalidEmail แสดงว่าอีเมลผิดรูปแบบ
FIRAuthErrorCodeEmailAlreadyInUse บ่งบอกว่ามีอีเมลที่ใช้ลงชื่อสมัครใช้อยู่แล้ว โปรดโทรหา fetchProvidersForEmail เพื่อตรวจสอบว่าผู้ใช้ดังกล่าวใช้กลไกการลงชื่อเข้าใช้ใดบ้าง และแจ้งให้ผู้ใช้ลงชื่อเข้าใช้ด้วยกลไกดังกล่าว
FIRAuthErrorCodeOperationNotAllowed ระบุว่าไม่ได้เปิดใช้บัญชีอีเมลและรหัสผ่าน เปิดใช้ในส่วนการตรวจสอบสิทธิ์ของคอนโซล 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 เพื่อขออีเมลของผู้ใช้รายนี้ แล้วแจ้งให้ลงชื่อเข้าใช้ด้วยผู้ให้บริการการลงชื่อเข้าใช้ที่ส่งคืนมา ข้อผิดพลาดนี้จะเกิดขึ้นหากเปิดใช้การตั้งค่า "1 บัญชีต่ออีเมล" ในคอนโซล Firebase ในการตั้งค่าการตรวจสอบสิทธิ์เท่านั้น
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