【问题标题】:AngularFireAuth. Create user with additional fieldAngularFireAuth。创建具有附加字段的用户
【发布时间】:2017-09-21 14:53:35
【问题描述】:

是否可以在 Firebase 中使用附加字段创建用户? 在我的代码中,我可以使用“电子邮件”和“密码”来创建它们。

  this.af.auth.createUser({
    name: formData.value.name,  // gives error*
    email: formData.value.email,
    password: formData.value.password
  }).then(

*错误:

signup.component.ts (26,9): 类型参数 '{ name: any;电子邮件:任何;密码:任意; }' 不可分配给“EmailPasswordCredentials”类型的参数。 对象字面量只能指定已知属性,并且“名称”不存在于“EmailPasswordCredentials”类型中。

我想添加其他字段,例如“出生日期”、“显示名称”等。

非常感谢

【问题讨论】:

    标签: angular firebase firebase-authentication angularfire angularfire2


    【解决方案1】:

    根据documentation,您不能这样做。但是,您可以将这些附加字段添加到数据中。我使用了一个用户设置结构,其中有相同的用户 ID,然后你就有了一个完整的结构。

    我使用基本数据结构 UserSettings 的文件夹来保存自定义字段,然后在处理身份验证的同时在 Angular 数据提供程序中获取这些数据。

    "UserSettings": {
        // User Specified Settings should be read/write by the user
        "$user_id": {
            ".read": "$user_id === auth.uid",
            ".write": "$user_id === auth.uid"
        }
    }
    

    Firebase 数据

    + - /UserSettings
        + /<user id string>
            + Name
            + BirthDate
    

    【讨论】:

    • 是否可以将所有字段发送到 Cloud Functions(/for Firebase)并通过用户的一次调用来完成这两项操作?
    • 我不确定你的问题。这取决于您如何编写数据,并且我确实在用户 ID 下编写了具有该层次结构的 JSON 对象。如果有帮助的话,把它写成一个对象可以使用定义的结构。
    • 感谢 Steven 的回复,请写“short”:我有一个网站,在注册表单中需要电子邮件+密码+其他字段。我不想仅在注册成功后添加这些字段(使用 createUserWithEmailAndPassword 回调),因为如果成功注册和回调之间存在任何问题,则会在不存储所有字段的情况下获取电子邮件。我可以通过将带有 mail+pw+fields 的 JSON 发送到 Cloud Functions 并从那里执行 Firebase Auth + Firestore 用户字段来实现这一点吗?
    • 我认为你需要在你的流程中打破它。验证并创建用户,然后在通过时更新存储中的其他信息。这也将允许人们更改这些值(电子邮件地址、姓名等)并将这些值从您网站的正确页面保存到相同的位置。
    猜你喜欢
    • 2021-05-28
    • 1970-01-01
    • 2016-05-08
    • 2015-07-23
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多