验证用户身份验证的问题

时间:2021-02-09 18:26:34

标签: java firebase firebase-authentication android-studio-3.0

我是 Java 编程的初学者我正在尝试在应用程序中创建 2 路登录系统,第一个是电子邮件,第二个是电话号码,但我一直在识别用户使用电话登录的用户号码或电子邮件 在我的启动画面上,首先我检查用户是否为空或否,如果它不为空,然后第二我检查用户电子邮件是否已验证,如果用户电子邮件已验证,则用户可以转到主应用程序,但如果用户电子邮件没有经过验证,那么他应该去验证页面,他应该首先验证他的帐户,但如果用户使用他的电话号码登录,他应该去主应用程序但我的问题是,什么时候用电话号码注册,我打开它转到验证电子邮件页面的应用。

public class SplashScreen extends AppCompatActivity
{
   ImageView icon;
   TextView app;
   RelativeLayout relativeLayout;
   Animation layout;
   private FirebaseAuth mAuth;
   FirebaseUser firebaseUser;

   @Override
   protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_screen);

    firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    mAuth = FirebaseAuth.getInstance();


    app = findViewById(R.id.splash_scren_app);
    relativeLayout = findViewById(R.id.splash_srceen);
    icon = findViewById(R.id.splash_srceen_icon);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            relativeLayout.setVisibility(View.VISIBLE);
            relativeLayout.setAnimation(layout);

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    app.setVisibility(View.VISIBLE);
                    icon.setVisibility(View.VISIBLE);
                }
            },500);
        }
    },1000);

    if (firebaseUser!=null)
    {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run()
            {
                if (firebaseUser.isEmailVerified())
                {
                    Intent intent = new Intent(SplashScreen.this,MainActivity.class);
                    startActivity(intent);
                    finish();
                }
                else
                {
                    Intent intent = new Intent(SplashScreen.this,EmailVerification.class);
                    startActivity(intent);
                    finish();
                }
            }
        },5000);
    }
    else
    {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                Intent intent = new Intent(SplashScreen.this,WelcomeScreen.class);
                startActivity(intent);
                finish();
            }
        },5000);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

你的逻辑有问题

if (firebaseUser.isEmailVerified())
                {
                    Intent intent = new Intent(SplashScreen.this,MainActivity.class);
                    startActivity(intent);
                    finish();
                }
                else
                {
                    Intent intent = new Intent(SplashScreen.this,EmailVerification.class);
                    startActivity(intent);
                    finish();
                }

改为这样做

if (firebaseUser.isEmailVerified() || firebase.getPhoneNumber() != null)
                {
                    Intent intent = new Intent(SplashScreen.this,MainActivity.class);
                    startActivity(intent);
                    finish();
                }
                else
                {
                    if(firebaseUser.isEmailVerified()){
                    Intent intent = new Intent(SplashScreen.this,EmailVerification.class);
                    startActivity(intent);
                    finish();
                    }
                    else if (firebase.getPhoneNumber() != null){
                     //go to the phone verify activity
                     }
                }