从iOS上的FirebaseUI身份验证提示中删除“名字和姓氏”字段

问题描述

我已经在我的iOS应用中内置了FirebaseUI Auth,但是我想从电子邮件身份验证提示删除“姓氏”字段。该库节省了大量时间,但是我的应用程序不需要用户提供此信息。

我查看了documentation,并在Stack Overflow上找到了有关此库的Web版本的一些similar posts,但是我在修改修改的字段时遇到了麻烦在iOS库中显示用于电子邮件身份验证。在另一篇文章中,最重要的答案是可以在该库中修改requiredisplayName属性

对于iOS库,我尝试创建电子邮件授权提供程序的实例并更改它的requiredisplayName属性,但出现错误: “无法分配给属性:'requiredisplayName'是一个只读属性”。

我会以错误的方式处理吗?还是目前似乎不存在此功能解决此问题的合理方法是什么—分叉并删除使该属性变为只读的所有内容

  func presentAuthController() {
    let authUI = FUIAuth.defaultAuthUI()
    // You need to adopt a FUIAuthDelegate protocol to receive callback
    authUI?.delegate = self
    
    let emailAuth = FUIEmailAuth()
    emailAuth.requiredisplayName = false
    
    if #available(iOS 13.0,*) {
      let providers: [FUIAuthProvider] = [
        emailAuth,FUIGoogleAuth(),FUIFacebookAuth(),FUIOAuth.appleAuthProvider()
      ]
      authUI?.providers = providers
    } else {
      let providers: [FUIAuthProvider] = [
        emailAuth,FUIFacebookAuth()
      ]
      authUI?.providers = providers
    }
    let fwefwef = FUIEmailAuth()
    // FIXME: Privacy policy
//    authUI?.privacyPolicyURL =
//    authUI?.tosurl
    
    let authViewController = authUI!.authViewController()
    
    
    self.present(authViewController,animated: true,completion: nil)
  }

The error

The display as it appears by default

解决方法

原来,我只需要在初始化emailAuth对象时定义requireDisplayName属性。

func presentAuthController() {
    let authUI = FUIAuth.defaultAuthUI()
    // You need to adopt a FUIAuthDelegate protocol to receive callback
    authUI?.delegate = self
    
    let settings = ActionCodeSettings()

    let emailAuth = FUIEmailAuth(
      authAuthUI: authUI!,signInMethod: EmailPasswordAuthSignInMethod,forceSameDevice: false,allowNewEmailAccounts: true,requireDisplayName: false,actionCodeSetting: settings
    )
    
    if #available(iOS 13.0,*) {
      let providers: [FUIAuthProvider] = [
        emailAuth,FUIGoogleAuth(),FUIFacebookAuth(),FUIOAuth.appleAuthProvider()
      ]
      authUI?.providers = providers
    } else {
      let providers: [FUIAuthProvider] = [
        emailAuth,FUIFacebookAuth()
      ]
      authUI?.providers = providers
    }
    
    let authViewController = authUI!.authViewController()
    
    self.present(authViewController,animated: true,completion: nil)
  }