#firebase-authentication #swiftui
#firebase-аутентификация #swiftui
Вопрос:
Я получаю сообщение об ошибке при попытке повторной аутентификации пользователя в Firebase, чтобы обновить его адрес электронной почты. Учетная запись была настроена с использованием метода аутентификации по электронной почте, который позволяет выполнять вход без пароля.
Ошибка гласит: «Тип выражения неоднозначен без дополнительного контекста» и находится в строке «пусть учетные данные = EmailAuthProvider.credential(с электронной почтой: электронная почта, ссылка: ссылка)» в части .credential.
Функция:
func updateUser(updateField: String, fieldValue: String) {
if fieldValue != "" {
if (updateField == "email") {
Auth.auth().currentUser?.updateEmail(to: newEmail) { (error) in
if error != nil {
let email = Auth.auth().currentUser?.email
let credential = EmailAuthProvider.credential(withEmail:email, link:link)
Auth.auth().currentUser?.reauthenticate(with: credential) { authData, error in
if (error) {
// And error occurred during re-authentication.
return
}
// The user was successfully re-authenticated.
}
}
}
}
}
Тело:
// MARK: - BODY
var body: some View {
ZStack {
RoundedRectangle(cornerRadius: 6)
.frame(height: 50.0)
.foregroundColor(Color.grey5)
HStack {
Text(placeholder)
.font(Font.custom("Gotham-Medium", size: 14))
.foregroundColor(.dsCharcoal)
Spacer()
TextField(placeholder, text: $text, onEditingChanged: { (changed) in
// print("Username onEditingChanged - (changed)")
}) {
updateUser(updateField: self.fieldType, fieldValue: self.text)
} //: TEXT FIELD
.keyboardType(.emailAddress)
.font(Font.custom("Gotham-Book", size: 14))
.foregroundColor(.grey2)
.multilineTextAlignment(.trailing)
} //: HSTACK
.padding(.horizontal)
} //: ZSTACK
.padding(.horizontal)
}
Я пробовал несколько разных версий кода, и все они, похоже, каким-то образом выдают ошибку. Я не уверен, чего мне не хватает. Спасибо за вашу помощь!
Комментарии:
1. Какую ссылку вы здесь передаете? пусть учетные данные = EmailAuthProvider.учетные данные (с электронной почтой: электронная почта, ссылка: ссылка) требуется ссылка строкового типа
2. Вы также можете использовать это
let credential = EmailAuthProvider.credential(withEmail: "your_email", password: "your_pass")
3. Я предполагаю, что ссылка будет динамической ссылкой, которую я настроил, которая используется при первоначальном входе пользователя в систему. Это выглядит примерно так: » myappname.page.link / открыть «. Учетная запись настроена с использованием метода без пароля, поэтому пароль для передачи отсутствует.
4. Хорошо. Если я передаю как строку, тогда она работает нормально
5. Просто передайте статическую строку и проверьте