用户更改时未触发Firebase验证侦听器

时间:2017-11-26 22:16:29

标签: firebase xamarin.android firebase-authentication

我正在使用Xamarin.Firebase.Auth。在我的应用程序的注册活动中,我想检查以确保尚未使用用户名。我需要检查数据库中的用户名。由于这是注册,因此用户尚未经过身份验证,并且无权访问数据库。我允许对应用程序的这一部分进行匿名身份验证。

在清除用户名后,我使用CreateUserWithEmailAndPasswordAsync创建新用户,一旦完成,我需要触发我的AuthState监听器。问题是,当用户从匿名用户更改为创建用户时,监听器似乎不会触发。

这是我当前的AuthStateListener:

FirebaseAuth.Instance.AuthState += (sender, e) =>
        {
            FirebaseUser oUser = e?.Auth?.CurrentUser;

            if (oUser != null && !oUser.IsEmailVerified && !oUser.IsAnonymous)
            {
                //They were successfully created, send the verification email
                if (oUser.SendEmailVerification().IsSuccessful)
                {
                    UserProfileChangeRequest oProfile = new UserProfileChangeRequest.Builder()
                                                    .SetDisplayName(txtName.Text).Build();

                    oUser.UpdateProfile(oProfile);

                    //Add the user information to the database
                    Users oUserToSave = new Users();
                    oUserToSave.displayname = txtName.Text;
                    oUserToSave.email = txtEmail.Text;
                    oUserToSave.prestige = 1;
                    oUserToSave.username = sUsername;


                    //It worked, they need to verify their email address
                    //redirect them to the verification page
                    Intent oVerifyIntent = new Intent(this, typeof(VerificationActivity));
                    StartActivity(oVerifyIntent);
                    FirebaseAuth.Instance.AuthState += null;
                    Finish();
                }
            }
            else if (oUser != null && oUser.IsAnonymous && allowAuthChange)
            {
                //Need to validate their registration
                ValidateRegistration();
            }
        };

如何在CreateUserWithEmailAndPasswordAsync完成时确保调用侦听器? Firebase的文档声明应在这些实例中触发侦听器:

  
      
  • 听众注册后
  •   
  • 用户登录后
  •   
  • 当前用户退出时
  •   
  • 当前用户更改时
  •   

从匿名用户切换到新创建的用户是否不算作用户更改?

1 个答案:

答案 0 :(得分:0)

您可以阅读firebase文档:

https://firebase.google.com/docs/auth/android/anonymous-auth

您需要使用linkWithCredential方法而不是“普通”signInWith流程。