Xamrin.Forms尝试使用Firebase实时数据库创建电子邮件检查

jheredia07

我是使用Xamarin.Forms的新手,目前正在创建注册页面。我正在尝试创建一种方法来检查在创建帐户时是否已经使用了电子邮件。我正在使用Firebase实时数据库。我设法让应用程序检查电子邮件是否已使用并显示错误,但是当电子邮件有效(未使用)时,当我创建帐户时,该应用程序不会执行任何操作。我想念什么?

我已经提供了代码

    public Command SignUpCommand
    {
        get
        {
            return new Command(() =>
            {
                var hasSymbols = new Regex(@"[!@#$%^&*()_+=\[{\]};:<>|./?,-]");

                //null or empty field validation, check weather email and password is null or empty
                if (string.IsNullOrEmpty(Email) || string.IsNullOrEmpty(Password))
                {
                    App.Current.MainPage.DisplayAlert("Empty Values", "Please enter Email and Password", "OK");
                }
                else if (!Email.Contains("@"))
                {
                    App.Current.MainPage.DisplayAlert("", "Email Address is Invalid", "OK");
                }
                else if (Password.Length < 8)
                {
                    App.Current.MainPage.DisplayAlert("", "Password is less than 8 characters", "OK");
                }
                else if (!Password.Any(char.IsUpper))
                {
                    App.Current.MainPage.DisplayAlert("", "Password Must Contain at Least 1 Uppcase Letter", "OK");
                }
                else if (!hasSymbols.IsMatch(Password))
                {
                    App.Current.MainPage.DisplayAlert("", "Password should contain At least one special case characters", "OK");
                }
                else if (Password != ConfirmPassword)
                {
                    App.Current.MainPage.DisplayAlert("", "Password must be same as above!", "OK");
                }
                else if (string.IsNullOrEmpty(StudentID))
                {
                    App.Current.MainPage.DisplayAlert("Empty Values", "Please enter Student ID", "OK");
                }
                else if (StudentID.Length < 9)
                {
                    App.Current.MainPage.DisplayAlert("", "Student ID is Incorrect!", "OK");
                }
                else
                {
                    EmailCheck();
                }

            });

        }

    }

    private async void EmailCheck()
    {

        //call GetUser function which we define in Firebase helper class
        var user = await FirebaseHelper.GetUser(Email);
        //firebase return null valuse if user data not found in database
        if (user != null)
            if (Email == user.Email)
            {
                await App.Current.MainPage.DisplayAlert("Email Already Used", "", "Ok");
            }
            else
                SignUp();
    }

    private async void SignUp()
    {
        //call AddUser function which we define in Firebase helper class
        var user = await FirebaseHelper.AddUser(Email, Password, StudentID, FirstName, LastName, CarMake, CarModel,
                                                CarYear, CarColor, LicenseNumber);
        //AddUser return true if data insert successfuly 
        if (user)
        {
            await App.Current.MainPage.DisplayAlert("SignUp Success", "", "Ok");
            //Navigate to Wellcom page after successfuly SignUp
            //pass user email to welcom page
            await App.Current.MainPage.Navigation.PushAsync(new LoginPage());
        }
        else
            await App.Current.MainPage.DisplayAlert("Error", "SignUp Fail", "OK");
    }
}

}

Cherry Bu-MSFT

根据您的描述,您想要创建项目,使用电子邮件帐户注册帐户,并注册以浏览另一个内容页面。

但是我发现您的代码有点混乱,我做了一个简单的示例,您可以看一下:

 <StackLayout>
    <!--  Place new controls here  -->
    <Entry x:Name="txtemail" Placeholder="Email" />
    <Entry x:Name="txtpassword" Placeholder="Enter Password" />
    <Entry x:Name="txtstudentId" Placeholder="Enter Student Id" />
    <StackLayout HorizontalOptions="CenterAndExpand" Orientation="Horizontal">
        <Button
            x:Name="btnSign"
            Clicked="BtnSign_Clicked"
            Text="Sign up"
            WidthRequest="200" />
        <Button
            x:Name="btnRegister"
            Clicked="BtnRegister_Clicked"
            Text="Retrive"
            WidthRequest="200" />
    </StackLayout>
</StackLayout>

 public partial class MainPage : ContentPage
{
    FirebaseHelper firebaseHelper = new FirebaseHelper();
    public MainPage()
    {
        InitializeComponent();
    }

    private async void BtnSign_Clicked(object sender, EventArgs e)
    {
        var person = await firebaseHelper.GetPerson(txtemail.Text);
        if (person != null)
        {
            if(person.Email==txtpassword.Text)
            {
                await Navigation.PushAsync(new Page1());
            }
            else
            {
                await DisplayAlert("Fail", "Password is not correct!", "OK");
            }              
        }
        else
        {
            await DisplayAlert("Fail", "No email Available!", "OK");
        }
    }

    private async void BtnRegister_Clicked(object sender, EventArgs e)
    {
        if(await RegisterAccount())
        {
            await firebaseHelper.AddPerson(txtemail.Text, txtpassword.Text, txtstudentId.Text);
            txtemail.Text = string.Empty;
            txtpassword.Text = string.Empty;
            txtstudentId.Text = string.Empty;
            await DisplayAlert("Success", "Person Added Successfully", "OK");
        }
        else
        {
            await DisplayAlert("Fail", "Person Added Fail", "OK");
        }


    }

    private async Task<bool> RegisterAccount()
    {
        var hasSymbols = new Regex(@"[!@#$%^&*()_+=\[{\]};:<>|./?,-]");

        //null or empty field validation, check weather email and password is null or empty
        if (string.IsNullOrEmpty(txtemail.Text) || string.IsNullOrEmpty(txtpassword.Text))
        {
          await  DisplayAlert("Empty Values", "Please enter Email and Password", "OK");

            return false;
        }
        else if (!txtemail.Text.Contains("@"))
        {
            await DisplayAlert("", "Email Address is Invalid", "OK");
            return false;
        }
        else if (txtpassword.Text.Length < 8)
        {
            await DisplayAlert("", "Password is less than 8 characters", "OK");
            return false;
        }
        else if (!txtpassword.Text.Any(char.IsUpper))
        {
            await DisplayAlert("", "Password Must Contain at Least 1 Uppcase Letter", "OK");
            return false;
        }
        else if (!hasSymbols.IsMatch(txtpassword.Text))
        {
            await DisplayAlert("", "Password should contain At least one special case characters", "OK");
            return false;
        }

        else if (string.IsNullOrEmpty(txtstudentId.Text))
        {
            await DisplayAlert("Empty Values", "Please enter Student ID", "OK");
            return false;
        }

        else
        {
            var person = await firebaseHelper.GetPerson(txtemail.Text);
            if (person != null)
            {
                await DisplayAlert("fail", "Email already exist", "OK");
                return false;

            }
        }

        return true;

    }
}

public class Register
{
    public string Email { get; set; }
    public string Password { get; set; }
    public string StudentId { get; set; }
}

 public class FirebaseHelper
{
    FirebaseClient firebase = new FirebaseClient("https://testapp1-ebb27-6e5ba.firebaseio.com/");

    public async Task<List<Register>> GetAllPersons()
    {

        return (await firebase
          .Child("Persons")
          .OnceAsync<Register>()).Select(item => new Register
          {
              Email = item.Object.Email,
              Password = item.Object.Password,
              StudentId=item.Object.StudentId

          }).ToList();
    }

    public async Task AddPerson(string email, string password, string studentid)
    {

        await firebase
          .Child("Persons")
          .PostAsync(new Register() { Email = email, Password = password, StudentId = studentid });

    }

    public async Task<Register> GetPerson(string email)
    {
        var allPersons = await GetAllPersons();
        await firebase
          .Child("Persons")
          .OnceAsync<Register>();
        return allPersons.Where(a => a.Email == email).FirstOrDefault();
    }


}

这是我在github上的示例:

https://github.com/CherryBu/RegisterApp

在此处输入图片说明

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用 FIrebase 实时数据库通过他的电子邮件检索好友密钥

来自分类Dev

使用 Firebase 函数将实时数据库中的数据发送到电子邮件

来自分类Dev

Xamrin.Forms输入单元格如何更改占位符的字体大小

来自分类Dev

Xamrin.Forms Navigation.PopAsync不会在Android上更改页面

来自分类Dev

当我尝试以Xamrin形式添加ZXing.Net.Mobile.forms并进行编译时,它显示错误

来自分类Dev

添加自定义域以用于Firebase实时数据库(即验证电子邮件链接)

来自分类Dev

如何将用户电子邮件从 Firebase 身份验证检索到实时数据库

来自分类Dev

尝试使用Yiimail从数据库获取电子邮件

来自分类Dev

只有 xamrin 直播播放器

来自分类Dev

如何使用firebase实时数据库检查数据是否已经在html表中?

来自分类Dev

创建/更新/删除 Firebase 实时数据库规则

来自分类Dev

尝试/捕获发送电子邮件并创建数据库条目,即使不应这样做

来自分类Dev

尝试从数据库值发送电子邮件

来自分类Dev

尝试从数据库值发送电子邮件

来自分类Dev

检查数据库中是否存在电子邮件

来自分类Dev

使用Firebase实时数据库填充tableview

来自分类Dev

从 Node 使用 Firebase 实时数据库

来自分类Dev

Firebase实时数据库addValueEventListener

来自分类Dev

Firebase实时数据库-规则

来自分类Dev

Firebase实时数据库addValueEventListener

来自分类Dev

Android:Firebase实时数据库

来自分类Dev

Firebase 实时数据库的问题

来自分类Dev

Firebase 实时数据库帖子

来自分类Dev

如何使用CodeIgniter检查数据库中是否已存在电子邮件

来自分类Dev

使用expressJS检查数据库中的用户名和电子邮件

来自分类Dev

如何使用数据库检查js中的电子邮件验证

来自分类Dev

使用codeigniter和AJAX检查数据库SQL中是否存在电子邮件

来自分类Dev

使用Jquery检查数据库中是否存在电子邮件

来自分类Dev

使用 MySQL 数据库检查脚本时,错误的电子邮件或密码错误

Related 相关文章

  1. 1

    无法使用 FIrebase 实时数据库通过他的电子邮件检索好友密钥

  2. 2

    使用 Firebase 函数将实时数据库中的数据发送到电子邮件

  3. 3

    Xamrin.Forms输入单元格如何更改占位符的字体大小

  4. 4

    Xamrin.Forms Navigation.PopAsync不会在Android上更改页面

  5. 5

    当我尝试以Xamrin形式添加ZXing.Net.Mobile.forms并进行编译时,它显示错误

  6. 6

    添加自定义域以用于Firebase实时数据库(即验证电子邮件链接)

  7. 7

    如何将用户电子邮件从 Firebase 身份验证检索到实时数据库

  8. 8

    尝试使用Yiimail从数据库获取电子邮件

  9. 9

    只有 xamrin 直播播放器

  10. 10

    如何使用firebase实时数据库检查数据是否已经在html表中?

  11. 11

    创建/更新/删除 Firebase 实时数据库规则

  12. 12

    尝试/捕获发送电子邮件并创建数据库条目,即使不应这样做

  13. 13

    尝试从数据库值发送电子邮件

  14. 14

    尝试从数据库值发送电子邮件

  15. 15

    检查数据库中是否存在电子邮件

  16. 16

    使用Firebase实时数据库填充tableview

  17. 17

    从 Node 使用 Firebase 实时数据库

  18. 18

    Firebase实时数据库addValueEventListener

  19. 19

    Firebase实时数据库-规则

  20. 20

    Firebase实时数据库addValueEventListener

  21. 21

    Android:Firebase实时数据库

  22. 22

    Firebase 实时数据库的问题

  23. 23

    Firebase 实时数据库帖子

  24. 24

    如何使用CodeIgniter检查数据库中是否已存在电子邮件

  25. 25

    使用expressJS检查数据库中的用户名和电子邮件

  26. 26

    如何使用数据库检查js中的电子邮件验证

  27. 27

    使用codeigniter和AJAX检查数据库SQL中是否存在电子邮件

  28. 28

    使用Jquery检查数据库中是否存在电子邮件

  29. 29

    使用 MySQL 数据库检查脚本时,错误的电子邮件或密码错误

热门标签

归档