Я разрабатываю приложение для iOS 17+, мой Firebase-ios-sdk 10.18.0, Xcode 15.4. Мне нужно реализовать вход и регистрацию в приложении по номеру телефона. Но из-за нескольких видов ошибок я не могу отправить смс.
Первая ошибка:
Ошибка во время Проверка номера телефона: произошла внутренняя ошибка. Распечатайте и просмотрите сведения об ошибке для получения дополнительной информации. Код ошибки Firebase: FIRAuthErrorCode(rawValue: 17999)
он появляется чаще всего и сопровождается ошибкой
https://www.googleapis.com/identitytool ... cationCode, код ответа: 503
также поскольку ошибка появляется реже
Ошибка при проверке номера телефона: Мы заблокировали все запросы с этого устройства из-за необычной активности. Попробуйте позже. Код ошибки Firebase: FIRAuthErrorCode(rawValue: 17010)
и сопровождается ошибкой
https://www.googleapis.com/identitytool ... cationCode, код ответа: 400
Я пробовал много решений и вот что я могу сказать
[*]Конечно, я включил регистрацию по номеру телефона в FireBase и Google Cloud Platform
[*]Регистрация и аутентификация работают корректно, если добавить тестовый номер телефона.
[*]Ошибка не связано с reCaptcha, так как он проходит успешно, и я перепроверил схемы URL
[*]В Google Cloud Platform я включил «Cloud Identity» и «Identity Toolkit API»
[*]Ошибка также не имеет ничего общего с ключом аутентификации APN, поскольку я могу отправлять уведомления через Cloud Messaging без каких-либо проблемы.
[*]Я также привязал свою кредитную карту.
Вот мой код для AppDelegate и функций, связанных с отправкой сообщения
func startAuth(phoneNumber: String, completion: @escaping (Bool) -> Void) {
print("Starting phone number verification for: \(phoneNumber)")
// Установить isAppVerificationDisabledForTesting в true для тестирования
// Auth.auth().settings?.isAppVerificationDisabledForTesting = true
PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate: nil) { verificationID, error in
if let error = error {
print("Error during phone number verification: \(error.localizedDescription)")
if let errorCode = AuthErrorCode.Code(rawValue: (error as NSError).code) {
print("Firebase Error Code: \(errorCode)")
}
completion(false)
return
}
UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
completion(true)
}
}
func verifyCode(smsCode: String, completion: @escaping (Bool) -> Void) {
guard let verificationID = UserDefaults.standard.string(forKey: "authVerificationID") else {
completion(false)
return
}
let credential = PhoneAuthProvider.provider().credential(withVerificationID: verificationID, verificationCode: smsCode)
Auth.auth().signIn(with: credential) { authResult, error in
if let error = error {
print("Error verifying code: \(error)")
completion(false)
return
}
completion(true)
}
}
func resendCode(completion: @escaping (Bool) -> Void) {
guard let phoneNumber = tempUserData?["phoneNumber"] as? String else {
completion(false)
return
}
startAuth(phoneNumber: phoneNumber) { success in
completion(success)
}
}
func registerUser(userData: [String: Any], completion: @escaping (Bool) -> Void) {
let db = Firestore.firestore()
guard let uid = Auth.auth().currentUser?.uid else {
completion(false)
return
}
db.collection("users").document(uid).setData(userData) { error in
if let error = error {
print("Error registering user: \(error)")
completion(false)
return
}
completion(true)
}
}
и
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
// let providerFactory = AppCheckDebugProviderFactory()
// AppCheck.setAppCheckProviderFactory(providerFactory)
let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)
FirebaseApp.configure()
print("App Check provider factory set")
// Запрос разрешения на отправку уведомлений
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
print("Permission granted: \(granted)")
}
application.registerForRemoteNotifications()
print("Remote notifications registered")
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// Обработка регистрации удаленных уведомлений
Auth.auth().setAPNSToken(deviceToken, type: .unknown)
print("Remote notifications token registered")
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
// Обработка ошибки регистрации удаленных уведомлений
print("Failed to register for remote notifications: \(error.localizedDescription)")
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// Обработка полученных уведомлений
if Auth.auth().canHandleNotification(userInfo) {
completionHandler(.noData)
return
}
// This notification is not handled by Firebase Authentication.
// Handle the notification yourself, as appropriate.
}
}
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
if #available(iOS 14.0, *) {
return AppAttestProvider(app: app)
} else {
return DeviceCheckProvider(app: app)
}
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... -17999-and
Невозможно отправить SMS с кодом, SwiftUI, аутентификацией FireBase, ОШИБКА 17999 и ОШИБКА 17010. ⇐ IOS
Программируем под IOS
1719234528
Anonymous
Я разрабатываю приложение для iOS 17+, мой Firebase-ios-sdk 10.18.0, Xcode 15.4. Мне нужно реализовать вход и регистрацию в приложении по номеру телефона. Но из-за нескольких видов ошибок я не могу отправить смс.
Первая ошибка:
Ошибка во время Проверка номера телефона: произошла внутренняя ошибка. Распечатайте и просмотрите сведения об ошибке для получения дополнительной информации. Код ошибки Firebase: FIRAuthErrorCode(rawValue: 17999)
он появляется чаще всего и сопровождается ошибкой
https://www.googleapis.com/identitytoolkit/v3/relyingparty/sendVerificationCode, код ответа: 503
также поскольку ошибка появляется реже
Ошибка при проверке номера телефона: Мы заблокировали все запросы с этого устройства из-за необычной активности. Попробуйте позже. Код ошибки Firebase: FIRAuthErrorCode(rawValue: 17010)
и сопровождается ошибкой
https://www.googleapis.com/identitytoolkit/v3/relyingparty/sendVerificationCode, код ответа: 400
Я пробовал много решений и вот что я могу сказать
[*]Конечно, я включил регистрацию по номеру телефона в FireBase и Google Cloud Platform
[*]Регистрация и аутентификация работают корректно, если добавить тестовый номер телефона.
[*]Ошибка не связано с reCaptcha, так как он проходит успешно, и я перепроверил схемы URL
[*]В Google Cloud Platform я включил «Cloud Identity» и «Identity Toolkit API»
[*]Ошибка также не имеет ничего общего с ключом аутентификации APN, поскольку я могу отправлять уведомления через Cloud Messaging без каких-либо проблемы.
[*]Я также привязал свою кредитную карту.
Вот мой код для AppDelegate и функций, связанных с отправкой сообщения
func startAuth(phoneNumber: String, completion: @escaping (Bool) -> Void) {
print("Starting phone number verification for: \(phoneNumber)")
// Установить isAppVerificationDisabledForTesting в true для тестирования
// Auth.auth().settings?.isAppVerificationDisabledForTesting = true
PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate: nil) { verificationID, error in
if let error = error {
print("Error during phone number verification: \(error.localizedDescription)")
if let errorCode = AuthErrorCode.Code(rawValue: (error as NSError).code) {
print("Firebase Error Code: \(errorCode)")
}
completion(false)
return
}
UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
completion(true)
}
}
func verifyCode(smsCode: String, completion: @escaping (Bool) -> Void) {
guard let verificationID = UserDefaults.standard.string(forKey: "authVerificationID") else {
completion(false)
return
}
let credential = PhoneAuthProvider.provider().credential(withVerificationID: verificationID, verificationCode: smsCode)
Auth.auth().signIn(with: credential) { authResult, error in
if let error = error {
print("Error verifying code: \(error)")
completion(false)
return
}
completion(true)
}
}
func resendCode(completion: @escaping (Bool) -> Void) {
guard let phoneNumber = tempUserData?["phoneNumber"] as? String else {
completion(false)
return
}
startAuth(phoneNumber: phoneNumber) { success in
completion(success)
}
}
func registerUser(userData: [String: Any], completion: @escaping (Bool) -> Void) {
let db = Firestore.firestore()
guard let uid = Auth.auth().currentUser?.uid else {
completion(false)
return
}
db.collection("users").document(uid).setData(userData) { error in
if let error = error {
print("Error registering user: \(error)")
completion(false)
return
}
completion(true)
}
}
и
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
// let providerFactory = AppCheckDebugProviderFactory()
// AppCheck.setAppCheckProviderFactory(providerFactory)
let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)
FirebaseApp.configure()
print("App Check provider factory set")
// Запрос разрешения на отправку уведомлений
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
print("Permission granted: \(granted)")
}
application.registerForRemoteNotifications()
print("Remote notifications registered")
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// Обработка регистрации удаленных уведомлений
Auth.auth().setAPNSToken(deviceToken, type: .unknown)
print("Remote notifications token registered")
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
// Обработка ошибки регистрации удаленных уведомлений
print("Failed to register for remote notifications: \(error.localizedDescription)")
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// Обработка полученных уведомлений
if Auth.auth().canHandleNotification(userInfo) {
completionHandler(.noData)
return
}
// This notification is not handled by Firebase Authentication.
// Handle the notification yourself, as appropriate.
}
}
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
if #available(iOS 14.0, *) {
return AppAttestProvider(app: app)
} else {
return DeviceCheckProvider(app: app)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78657259/unable-to-send-sms-with-code-swiftui-firebase-authentication-error-17999-and[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия