验证每个电子邮件地址(Firebase)

时间:2019-06-20 13:53:12

标签: java android firebase firebase-authentication

我正在注册项目,为了进行身份验证,我正在使用Firebase。现在,我希望我的代码仅验证或认证仅由gmail或yahoo或hotmail创建的那些电子邮件地址。新的电子邮件地址可以进行身份​​验证。如果用户编写不是在gmail或yahoo或hotmail中创建的电子邮件。它应该无法注册。 但是我的代码将获取每个随机电子邮件地址,无论该地址是否已经存在。在Firebase身份验证表中,它也显示了该电子邮件地址。 现在,我在验证每个电子邮件地址的代码中犯了什么错误。

代码:

package com.example.animation;

import android.content.Intent;
import android.graphics.Paint;
import android.graphics.drawable.AnimationDrawable;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class Signup extends AppCompatActivity {
    RelativeLayout myLayout;
    AnimationDrawable animationDrawable;
    private EditText email_signup, password_signup, name_signup;
    private Button signup_btn;
    private FirebaseAuth firebaseAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup);
        timing();
        setValues();
        TextView txt=findViewById(R.id.txt_signup);
      txt.setPaintFlags(txt.getPaintFlags()| Paint.UNDERLINE_TEXT_FLAG);
      firebaseAuth= FirebaseAuth.getInstance();
        signup_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(validate()){
                    // database
                    String user_email=email_signup.getText().toString().trim();
                    String user_password=password_signup.getText().toString().trim();
                    String user_name=name_signup.getText().toString().trim();

                    firebaseAuth.createUserWithEmailAndPassword(user_email,user_password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if(task.isSuccessful())
                            {
                                Toast.makeText(Signup.this,"Registeration Successful",Toast.LENGTH_SHORT).show();
                                startActivity(new Intent(Signup.this,MainActivity.class));
                            }
                            else
                            {
                                Toast.makeText(Signup.this,"Not Successful",Toast.LENGTH_SHORT).show();
                            }

                        }
                    });
                }

            }
        });
    }
    private void timing(){
        myLayout=findViewById(R.id.signup_layout);
        animationDrawable=(AnimationDrawable)myLayout.getBackground();
        animationDrawable.setEnterFadeDuration(2500);
        animationDrawable.setExitFadeDuration(2500);
        animationDrawable.start();

    }

    private void setValues(){
        email_signup=findViewById(R.id.email_reg);
        password_signup=findViewById(R.id.pass_reg);
        name_signup=findViewById(R.id.namebox);
        signup_btn=findViewById(R.id.btn_register);


    }
    private Boolean validate(){
    Boolean result=false;
    String name=name_signup.getText().toString();
    String password=password_signup.getText().toString();
    String  email=email_signup.getText().toString();

    if(name.isEmpty()&& password.isEmpty()&&email.isEmpty()){

        Toast.makeText(this,"Please enter all Details",Toast.LENGTH_SHORT).show();
    }
    else{
        result=true;
    }
    return result;
    }
}

这是Firebase身份验证表: enter image description here

这是我注册的地方: enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

根据您的评论:

  

我希望用户使用已经在gmail,yahoo或hotmail上创建的电子邮件地址进行注册。像第一个一样,我将在gmail(ajstyles25@gmail.com)上创建ID,并且我希望在我注册应用程序时使用该ID,并且仅注册此电子邮件地址。现在,如果我正在写(ajstyle0900@gmail.com),它将接受它,我不想要

要解决此问题,您需要跟踪用户。这意味着您必须将用户的电子邮件地址保存在数据库中。为此,我建议您使用新的Cloud Firestore数据库或Firebase realtime database。现在要检查Cloud Firestore中是否存在用户,请从以下帖子中查看我的答案:

要检查用户是否存在于Firebase实时数据库中,请从以下帖子中查看我的答案:

通过这种方式,仅当用户已经存在于数据库中时,您才能调用createUserWithEmailAndPassword()

相关问题