Firebase getIdToken() + React Native + 刷新用户数据库以验证电子邮件验证用户

Posted

技术标签:

【中文标题】Firebase getIdToken() + React Native + 刷新用户数据库以验证电子邮件验证用户【英文标题】:Firebase getIdToken() + React Native + refreshing user database to authenticate email verified user 【发布时间】:2017-12-02 06:59:38 【问题描述】:

我正在开发一个 React Native 项目并使用 Firebase。

我正试图让用户在验证其电子邮件地址后登录。我向用户发送了一封注册电子邮件,用户单击验证链接以验证自己,然后应该能够登录。我当前的代码允许用户登录后验证,但只有在我刷新应用程序之后。我希望用户在验证后登录而不刷新应用程序。 我发现我可以在 Firebase 中使用 getIdToken() 来实现它。但不知何故,我似乎无法让它工作。任何指示我在哪里做错了什么?提前致谢。

我的这个函数的代码 sn-p 是:

_login = () =>
var me = this;
firebaseRef.auth().onAuthStateChanged(function(user) 
  if(user)
    user.getIdToken(forceRefresh).then(function() 
      if( firebaseRef.auth().currentUser.emailVerified)
      firebaseRef.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(function()
        // some function here, which is working perfectly
      , 
      function(error) 
        alert('The username or password is incorrect');
          console.log(error);
      )
      
      else 
        alert('Your email has not been verified');
      
    ,
    function(error) 
      alert('There is an email verification error');
        console.log(error);
    )
   

  ) 

【问题讨论】:

【参考方案1】:
    firebase.auth().signInWithEmailAndPassword(email, password)
                .then(() => 
                    if(firebase.auth().currentUser.emailVerified === false) 
                        Alert.alert('Message')
                     else 
Actions.screen()
                )
                .catch(erro => Alert.alert(erro);
        

【讨论】:

以上是关于Firebase getIdToken() + React Native + 刷新用户数据库以验证电子邮件验证用户的主要内容,如果未能解决你的问题,请参考以下文章

Firebase getIdToken() + React Native + 刷新用户数据库以验证电子邮件验证用户

同步获取Firebase用户令牌

如何从 firebase_auth 获取令牌

我无法从 firebase 退出,但用户仍然不是 null

React Firebase 防止 axios 中的令牌过期

如何处理 Firebase 中过期的用户 ID 令牌?