无法在Firebase中创建用户配置文件

时间:2018-07-11 01:22:34

标签: firebase react-native firebase-realtime-database firebase-authentication react-redux

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

我正在用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 Tree

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

有人知道解决这个问题的方法吗?我觉得firebase Admin API可能是一个解决方案,但我似乎无法全力以赴。

1 个答案:

答案 0 :(得分:0)

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

state.firebase.profile

根据我的建议,我认为最好是整合 react-native应用程序+ react-native-firebase + react-redux-firebase

因此,您无需使用网络Firebase函数,因为它已经存在于道具中。

如果用户创建后需要更新配置文件,则可以使用类似的

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

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

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

在任何组件中,您都可以使用connect函数获取当前用户信息。

class Home extends Component {

}

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