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

หากการเรียกกลับเสร็จสิ้นในวิธีการรับรองความถูกต้องได้รับอาร์กิวเมนต์ 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 ที่คุณใช้มีรายการ ID ชุดของแอปพลิเคชันที่อนุญาตพิเศษ
FIRAuthErrorCodeKeychainError ระบุข้อผิดพลาดที่เกิดขึ้นเมื่อเข้าถึงพวงกุญแจ NSLocalizedFailureReasonErrorKey และ NSUnderlyingErrorKey ในพจนานุกรม NSError.userInfo จะมีข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่พบ
FIRAuthErrorCodeInternalError บ่งชี้ว่ามีข้อผิดพลาดภายในเกิดขึ้น โปรด รายงานข้อผิดพลาด ด้วยวัตถุ NSError ทั้งหมด

รหัสข้อผิดพลาดเฉพาะวิธี

FIRAuth

fetchProvidersForEmail:เสร็จสิ้น:

รหัส ความหมาย
FIRAuthErrorCodeInvalidEmail ระบุว่าที่อยู่อีเมลมีรูปแบบไม่ถูกต้อง

ลงชื่อเข้าใช้ด้วยอีเมล:รหัสผ่าน:เสร็จสิ้น:

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

signInWithCredential:เสร็จสิ้น:

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

ลงชื่อเข้าใช้โดยไม่ระบุชื่อด้วยการกรอก:

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

signInWithCustomToken:เสร็จสิ้น:

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

createUserWithEmail:รหัสผ่าน:เสร็จสิ้น:

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

ออกจากระบบ:

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

FIRUser

ข้อผิดพลาดทั่วไปสำหรับการดำเนินการ FIRUser

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

รับรองความถูกต้องอีกครั้งด้วย Credential: เสร็จสิ้น:

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

อัปเดตอีเมล:เสร็จสิ้น:

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

อัปเดตรหัสผ่าน:เสร็จสิ้น:

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

linkWithCredential:เสร็จสิ้น:

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

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

unlinkFromProvider:เสร็จสิ้น:

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

sendEmailVerificationWithCompletion:

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

ลบด้วยเสร็จสิ้น:

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