首页 > 解决方案 > 无法在 Firebase 中创建用户配置文件

问题描述

首先,感谢您抽出宝贵时间;这是我发布的第一个问题!

我正在用 React Native 编写我的第一个移动应用程序:一个为我的兄弟会管理统计数据的应用程序。现在,我希望管理员用户能够将其他用户添加到应用程序并设置他们的初始个人资料信息(名字、姓氏、职位、支付的会费等)。

一旦他们提交了详细信息,下面的代码会告诉 firebase 使用提供的电子邮件和密码创建一个新用户,然后在实时数据库中的用户父级下添加他们的其他个人资料信息。

firebase.auth().createUserWithEmailAndPassword(email, password)
  .then(() => {
    console.log(key);
    firebase.database().ref('/ChapterName/users/' + key)
    .set({ firstName, lastName, rank, position, goodStanding, dues, communityService, chapters, mixers, brotherhoods });
  })

创建的 JSON 树可以在这里看到:Firebase 树

我的问题是,当新用户登录时,我找不到访问他们的个人资料信息的方法......理想情况下,我会将“用户”下每个孩子的密钥设置为用户的电子邮件:这样他们就可以登录,我可以将他们的电子邮件与他们的个人资料信息的键相匹配并以这种方式获取它。不幸的是,密钥必须是 UTF-8 编码的,并且不允许我包含“@ 或 .”。

有谁知道解决这个问题的方法?我觉得firebase Admin API 可能是一个解决方案,但我似乎无法理解它。

标签: firebasereact-nativefirebase-realtime-databasefirebase-authenticationreact-redux

解决方案


在带有 firebase 的 react-native 中,如果他们的用户已经登录并且您已经将 firebase 与 redux 集成,则可以使用此行访问 redux 中的当前用户信息

state.firebase.profile

根据我的建议,我认为最好集成 react-native app + react-native-firebase + react-redux-firebase

因此,您不必使用 web firebase 功能,因为它已经存在于 props 中。

如果您需要在用户创建后更新配置文件,您可以使用类似这样的东西

this.props.firebase.auth().createUserAndRetrieveDataWithEmailAndPassword(email, password).then((user) => {

        this.props.firebase.updateProfile(
          {
            name: 'Hazim',
            age: 24,
            mode: 'Rampage'
          }
        )

      }).catch((error) => {
        //Error value
      })

在任何组件中,您都可以使用这样的连接功能获取当前用户信息。

class Home extends Component {

}

export default compose(
  firebaseConnect(),
  connect( state => {
    profile: state.firebase.profile
  })
)(Home)

推荐阅读