Messenger app with real-time database and facebook login HELP

im doing a tutorial of a messenger app in a real.time database in firebase and facebook login.

i can login with facebook normally but when i try to insert the email and the name of facebook to the data base, i can login with facebook but the login with firebase is not working

the login with facebook stuff is the bottom of the code, is the last extension.
thx

import UIKit
import FirebaseAuth
import FBSDKLoginKit

class LoginViewController: UIViewController {

private let scrollView: UIScrollView = {
    let scrollView = UIScrollView()
    scrollView.clipsToBounds = true
    return scrollView
}()

private let imageView: UIImageView = {
    let imageView = UIImageView()
    imageView.image = UIImage(named: "logo")
    imageView.contentMode = .scaleAspectFit
    return imageView
}()

private let emailField: UITextField = {
    let field = UITextField()
    field.autocapitalizationType = .none
    field.autocorrectionType = .no
    field.returnKeyType = .continue
    field.layer.cornerRadius = 12
    field.layer.borderWidth = 1
    field.layer.borderColor = UIColor.lightGray.cgColor
    field.placeholder = "Email Adress"
    
    field.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 0))
    field.leftViewMode = .always
    field.backgroundColor = .white
    return field
}()

private let passwordField: UITextField = {
    let field = UITextField()
    field.autocapitalizationType = .none
    field.autocorrectionType = .no
    field.returnKeyType = .done
    field.layer.cornerRadius = 12
    field.layer.borderWidth = 1
    field.layer.borderColor = UIColor.lightGray.cgColor
    field.placeholder = "Password"
    field.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 0))
    field.leftViewMode = .always
    field.backgroundColor = .white
    field.isSecureTextEntry = true
    return field
}()

private let loginButton: UIButton = {
    let loginButton = UIButton()
    loginButton.setTitle("Log In", for: .normal)
    loginButton.setTitleColor(.link, for: .normal)
    loginButton.layer.cornerRadius = 12
    loginButton.layer.masksToBounds = true
    loginButton.titleLabel?.font = .systemFont(ofSize: 20, weight: .bold)
    return loginButton
}()

private let facebookLoginButton: FBLoginButton = {
    let button = FBLoginButton()
    button.permissions = ["email,public_profile"]
    return button
}()


override func viewDidLoad() {
    super.viewDidLoad()
    title = "Log In"
    view.backgroundColor = .white
    
    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Register",
                                                        style: .done,
                                                        target: self,
                                                        action: #selector(didTapRegister))
    
    loginButton.addTarget(self,
                          action: #selector(loginButtontapped),
                          for: .touchUpInside)
    
    passwordField.delegate = self
    emailField.delegate = self
    
    facebookLoginButton.delegate = self
    
    // Add subviews
    
    view.addSubview(scrollView)
    scrollView.addSubview(imageView)
    scrollView.addSubview(emailField)
    scrollView.addSubview(passwordField)
    scrollView.addSubview(loginButton)
    scrollView.addSubview(facebookLoginButton)
    
    
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    scrollView.frame = view.bounds
    
    let size = scrollView.width / 3
    
    imageView.frame = CGRect(x: (scrollView.width - size) / 2,
                             y: 20, width: size,
                             height: size)
    
    emailField.frame = CGRect(x: 30,
                              y: imageView.bottom+40,
                              width: scrollView.width-60,
                              height: 52)
    
    passwordField.frame = CGRect(x: 30,
                                 y: emailField.bottom+10,
                                 width: scrollView.width-60,
                                 height: 52)
    
    loginButton.frame = CGRect(x: 30,
                               y: passwordField.bottom+40,
                               width: scrollView.width-60,
                               height: 52)
    
    facebookLoginButton.frame = CGRect(x: 30,
                                       y: loginButton.bottom+10,
                                       width: scrollView.width-60,
                                       height: 52)
    
    facebookLoginButton.frame.origin.y = loginButton.bottom + 20
}

@objc private func loginButtontapped() {
    
    emailField.resignFirstResponder()
    passwordField.resignFirstResponder() 
    
    guard let email = emailField.text, let password = passwordField.text, !email.isEmpty, !password.isEmpty, password.count >= 6 else {
        alertUserLoginError()
        return
    }
    
    // Firebase Log in
    
    FirebaseAuth.Auth.auth().signIn(withEmail: email,
                                    password: password) { [weak self] authResult, error in
                                        
                                        guard let strongSelf = self else {
                                            return
                                        }
                                        
                                        guard let result = authResult, error == nil else {
                                            print("Failed to log in user: \(email)")
                                            return
                                        }
                                        let user = result.user
                                        print("Logged in user: \(user)")
                                        strongSelf.navigationController?.dismiss(animated: true, completion: nil)
    }
}

func alertUserLoginError() {
    let alert = UIAlertController(title: "Ups",
                                  message: "Please enter all the information to log in.",
                                  preferredStyle: .alert)
    
    alert.addAction(UIAlertAction(title: "Dismiss",
                                  style: .cancel,
                                  handler: nil))
    
    present(alert, animated: true)
}

@objc private func didTapRegister() {
    let vc = RegisterViewController()
    vc.title = "Create Account"
    navigationController?.pushViewController(vc, animated: true)
}

}

extension LoginViewController: UITextFieldDelegate {

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    if textField == emailField {
        passwordField.becomeFirstResponder()
    }
    else if textField == passwordField {
        loginButtontapped()
    }
    return true
}

}

extension LoginViewController: LoginButtonDelegate {

func loginButtonDidLogOut(_ loginButton: FBLoginButton) {
    // no operation
}

func loginButton(_ loginButton: FBLoginButton,
                 didCompleteWith result: LoginManagerLoginResult?,
                 error: Error?) {
    guard let token = result?.token?.tokenString else {
        print("User failed to log in with facebook")
        return
    }
    
    let facebookRequest = FBSDKLoginKit.GraphRequest(graphPath: "me",
                                                     parameters: ["fields": "email, name"],
                                                     tokenString: token,
                                                     version: nil,
                                                     httpMethod: .get)
    
    facebookRequest.start(completionHandler: { _, result, error in
        guard let result = result as? [String: Any],
            error == nil else {
                print("Failed to make facebook graph request")
                return
        }
        
        guard let userName = result["name"] as? String,
            let email = result["email"] as? String else {
                print("Failed to get email and name from fb result")
                return
        }
        
        let nameComponents = userName.components(separatedBy: " ")
        guard nameComponents.count == 2 else {
            return
        }
        
        let firstName = nameComponents[0]
        let lastName = nameComponents[1]
        
        DatabaseManager.shared.userExists(with: email) { (exists) in
            if !exists {
                DatabaseManager.shared.insertUser(with: ChatAppUser(firstName: firstName,
                                                                    lastName: lastName,
                                                                    emailAddress: email))
            }
        }
        
        
        let credential = FacebookAuthProvider.credential(withAccessToken: token)
        FirebaseAuth.Auth.auth().signIn(with: credential, completion: { [weak self] authResut, error in
            
            guard let strongSelf = self else {
                return
            }
            
            guard authResut != nil, error == nil else {
                if let error = error {
                    print("facebook credential log in failed, MFA maybe needed - \(error)")
                }
                return
            }
            print("Successfully logged user in")
            strongSelf.navigationController?.dismiss(animated: true, completion: nil)
            
        })
    })
}

}

you should probably check your firebase rules maybe it doesn’t allow writing, you can easily check this by putting it in test mode first (allow read and write to everyone) just to be sure that the code works as intended