无法使用 Firebase (Xamarin.Android) 创建新用户

阿什利

每当我尝试通过应用程序注册用户时,即使满足所有要求,它也总是失败。我包含在清单中,但这并没有解决任何问题。电子邮件/密码登录方法也已启用。

我真的不知道该怎么做,因为这是我第一次使用 xamarin,而且在 xamarin 表单与 xamarin android 方面似乎有更多帮助。

    public class registerActivity : AppCompatActivity
    {
        TextInputLayout fullNameText;
        TextInputLayout phoneText;
        TextInputLayout emailtext;
        TextInputLayout passwordText;
        Button registerButton;

        FirebaseAuth firebaseAuth;
        FirebaseDatabase userCredentials;

        taskCompletetionListener taskCompletetionListener = new taskCompletetionListener();
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your application here
            SetContentView(Resource.Layout.registerPage);

            Typeface tf = Typeface.CreateFromAsset(Assets, "Tw_Cen_MT.TTF");

            var signUpTxt = FindViewById<TextView>(Resource.Id.signUpTxt);
            signUpTxt.SetTypeface(tf, TypefaceStyle.Bold);

            var signUpLink = FindViewById<TextView>(Resource.Id.signInLink);
            signUpLink.SetTypeface(tf, TypefaceStyle.Bold);

            var alreadyMemberTxt = FindViewById<TextView>(Resource.Id.haveAccTxt);
            signUpTxt.SetTypeface(tf, TypefaceStyle.Bold);

            Button signUpBtn = (Button)FindViewById(Resource.Id.registerBtn);
            signUpBtn.SetTypeface(tf, TypefaceStyle.Bold);

            InitializedFirebase();
            firebaseAuth = FirebaseAuth.Instance;
            ConnectControl();
        }

        void InitializedFirebase()
        {
            var app = FirebaseApp.InitializeApp(this);

            if (app == null)
            {
                var options = new FirebaseOptions.Builder()
                    .SetApplicationId("semoto-4b53b")
                    .SetApiKey("AIzaSyBiGjJQwDewsyWxviBjIimw7pQBHkbHkiA")
                    .SetDatabaseUrl("https://semoto-4b53b.firebaseio.com")
                    .SetStorageBucket("semoto-4b53b.appspot.com")
                    .Build();

                app = FirebaseApp.InitializeApp(this, options);
                userCredentials = FirebaseDatabase.GetInstance(app);
            }

            else
            {
                userCredentials = FirebaseDatabase.GetInstance(app);
            }
        }

        void ConnectControl()
        {
            fullNameText = (TextInputLayout)FindViewById(Resource.Id.nameField);
            emailtext = (TextInputLayout)FindViewById(Resource.Id.emailField);
            phoneText = (TextInputLayout)FindViewById(Resource.Id.phoneNumField);
            passwordText = (TextInputLayout)FindViewById(Resource.Id.passwordField);
            registerButton = (Button)FindViewById(Resource.Id.registerBtn);

            registerButton.Click += RegisterButton_Click;
        }

        private void RegisterButton_Click(object sender, EventArgs e)
        {
            string fullName, phoneNum, email, password;
            fullName = fullNameText.EditText.Text;
            phoneNum = phoneText.EditText.Text;
            email = emailtext.EditText.Text;
            password = passwordText.EditText.Text;

            if(fullName.Length <= 3)
            {
                fullNameText.ErrorEnabled = true;
                fullNameText.Error = "Please enter a valid name";
                return;
            }
            else if (!email.Contains("@"))
            {
                emailtext.ErrorEnabled = true;
                emailtext.Error = "Please enter a valid email";
                return;
            }
            else if(phoneNum.Length < 9)
            {
                phoneText.ErrorEnabled = true;
                phoneText.Error = "Please enter a valid phone number";
                return;
            }
            else if (password.Length < 8)
            {
                passwordText.ErrorEnabled = true;
                passwordText.Error = "Password should be at least 8 characters long";
                return;
            }

            registerUser(fullName, phoneNum, email, password);
        }

        void registerUser(string name, string phone, string email, string password)
        {
            taskCompletetionListener.success += TaskCompletetionListener_success;
            taskCompletetionListener.failure += TaskCompletetionListener_failure;
            firebaseAuth.CreateUserWithEmailAndPassword(email, password)
                .AddOnSuccessListener(this, taskCompletetionListener)
                .AddOnFailureListener(this, taskCompletetionListener);

        }

        private void TaskCompletetionListener_failure(object sender, EventArgs e)
        {
            Android.Support.V7.App.AlertDialog.Builder alert = new Android.Support.V7.App.AlertDialog.Builder(this);
            alert.SetTitle("Registration Failed!");
            alert.SetMessage("Ensure that you meet all of the requirements. ");
            alert.SetNeutralButton("OK", delegate
            {
                alert.Dispose();
            });
            alert.Show();
        }
        //reishinishite kudasai
        private void TaskCompletetionListener_success(object sender, EventArgs e)
        {
            Android.Support.V7.App.AlertDialog.Builder alert = new Android.Support.V7.App.AlertDialog.Builder(this);
            alert.SetTitle("Registration Successful");
            alert.SetMessage("Welcome!");
            alert.SetNeutralButton("OK", delegate
            {
                alert.Dispose();
            });
            alert.Show();
        }
    }
}

我为任务完成侦听器创建了一个类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.Gms.Tasks;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace Semoto.eventListeners
{
    public class taskCompletetionListener : Java.Lang.Object, IOnSuccessListener, IOnFailureListener
    {
        public event EventHandler success;
        public event EventHandler failure;
        public void OnFailure(Java.Lang.Exception e)
        {
            failure?.Invoke(this, new EventArgs());
        }

        public void OnSuccess(Java.Lang.Object result)
        {
            success?.Invoke(this, new EventArgs());
        }
    }
}
Leo Zhu - MSFT

这不是答案,只是为了让您更轻松地进行故障排除。

第一步,您需要知道导致失败的原因。

改变你的OnFailure听众,如:

 public void OnFailure(Java.Lang.Exception e)
  {
     failure?.Invoke(e, new EventArgs());
  }

然后在您的活动中,打印错误消息,在这里使用您的对话框显示:

 private void TaskCompletetionListener_failure(object sender, EventArgs e)
    {
        Android.Support.V7.App.AlertDialog.Builder alert = new Android.Support.V7.App.AlertDialog.Builder(this);
        alert.SetTitle("Registration Failed!");
        alert.SetMessage(((Java.Lang.Exception)sender).Message);
        alert.SetNeutralButton("OK", delegate
        {
            alert.Dispose();
        });
        alert.Show();
    }

然后你可以显示你的错误信息,我们可以帮助你更快地找到解决方案。(Ps:我用你的代码用我的账户测试,效果很好)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在Firebase上创建新用户

在 Flutter 中使用 Firebase 成功创建新用户后,Android 应用程序崩溃

Android Firebase 创建新用户不起作用

为什么 firebase 无法创建新用户?

如何邀请一些用户说用户B,C使用Firebase + Android应用查看和更新用户A创建的数据

Android Firebase实时写入新用户

无法创建新用户

创建用户后,Firebase使用自定义字段更新用户数据

使用node.js使用Firebase Auth创建新用户时设置Firestore文档

如何在Firebase Firestore中使用查询结果显示敬酒消息并创建新用户?

使用Firebase创建新用户时如何避免自动登录

在React中使用Firebase Auth创建新用户时出现内部错误

为新用户创建Firebase受众

Firebase 不会创建新用户

如何在Firebase中使用用户名,电子邮件和密码创建新用户?

为什么我无法在 Firebase 上注册新用户?

使用Gerrit UI创建新用户

使用 MySQL 参数创建新用户

使用Firebase Cloud功能更新用户

使用 php sdk 注册 firebase 新用户

fletch Firebase使用refreshToken自动刷新用户会话

MySQL 8使用密码无法创建新用户

Android-使用异步更新用户界面

Firebase/Firestore - 如何为新用户创建新文档

有没有办法不创建新用户,只允许现有用户使用 firebase_auth 登录,谷歌登录?

无法为新用户创建默认桌面 18.4.03

无法在Win 8.1上创建新用户

无法提交带有按钮的表单以创建新用户

无法在Umbraco 7.1.6中创建新用户