Ошибка повторной аутентификации SwiftUI Firebase при входе без пароля

#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. Просто передайте статическую строку и проверьте