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

时间:2020-08-26 15:00:19

标签: swift firebase 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,
        FUIGoogleAuth(),
        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

1 个答案:

答案 0 :(得分:0)

原来,我只需要在初始化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,
        FUIGoogleAuth(),
        FUIFacebookAuth()
      ]
      authUI?.providers = providers
    }
    
    let authViewController = authUI!.authViewController()
    
    self.present(authViewController, animated: true, completion: nil)
  }
相关问题