Android: Como entrar um usuário com o seu número de telefone

Mayur Sadhu:

Estou criando um aplicativo com onde eu quero já se inscreveram usuários sejam redirecionados para o seu perfil se o seu número de telefone está registrado no aplicativo, mas se ele for um novo usuário, em seguida, ele será redirecionado para a página de boas-vindas. O problema é que eu sou capaz de obter o código de verificação para o número de telefone, mas é sempre o redirecionamento para a página de boas-vindas, independentemente de se tratar de um usuário existente ou um novo usuário. De longe Eu tenho implementado autenticação por telefone Firebase, e

    private void verifyCode(String code) {

        PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.getCredential(verificationId, code);
        signInWithCredentials(phoneAuthCredential);

    }

    private void signInWithCredentials(PhoneAuthCredential phoneAuthCredential) {

        mAuth.signInWithCredential(phoneAuthCredential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {


                final String num = getIntent().getStringExtra("phoneNumber");
                final Query query = FirebaseDatabase.getInstance().getReference("users").orderByChild("birthday").equalTo(num);

                if (task.isSuccessful()) {

                    if (num.equals(query.toString())) {

                        Log.i("Method", "Inside if block");
                        Log.i("value", num + query.toString());
                        Intent intent = new Intent(VerifyPhoneActivity.this, WelcomeActivity.class);

                        startActivity(intent);

                    } else {

                        Log.i("Method", "Inside if block2");
                        Log.i("value", num + query.toString());



                    Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

                    startActivity(intent);
                }


                } else {

                    Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();

                }
            }
        });

    }

Eu estou tomando apenas o número de telefone do usuário para fazer login / registrar-se, e não há nenhum botão separado para o login e se inscrever. Ele deve funcionar de tal modo que, uma vez que o OTP enviado pelo auth Firebase foi verificada e se o número de telefone já está presente no banco de dados, ele deve diretamente fo página de perfil do usuário em vez da tela de boas-vindas, no entanto, se o número de telefone é novo ele deve ir para a página de boas-vindas em vez da página de perfil do usuário. O desafio que estou enfrentando é que eu não sou capaz de verificar se o número digitado já está presente no banco de dados na tabela de usuário (eu criei uma tabela de usuário separada para armazenar os detalhes do usuário quando ele se inscreve para o primeira vez).

Nothir:

pelo que entendi que você é capaz de registrar os usuários, mas você não é capaz de redirecionar os usuários não registrados para a tela de login / inscrição, se for esse o caso, então você pode tentar usar

FirebaseAuth.getInstance().currentUser

no em criar método de vista em sua welcome home page / ela deve ser algo como isto

override fun onCreate(savedInstanceState: Bundle?) {

  if (FirebaseAuth.getInstance().currentUser == null) {
     startActivity(Intent(applicationContext, RegistrationActivity::class.java))
     finish()
     return
  } 

  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_main)
  // do your other stuff

}

este código é escrito em Kotlin ele não deve ser tão diferente em java. espero que ajude.

ATUALIZAR------

você tem alguns erros com o seu código, tente este

private void verifyCode(String code) {

    PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.getCredential(verificationId, code);

    FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {

                final String num = getIntent().getStringExtra("phoneNumber");
                FirebaseDatabase.getInstance().getReference("users").orderByChild("phoneNumber").equalTo(num).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if (dataSnapshot.exists()) {
                            Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivity.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            startActivity(intent);
                        } else {
                            FirebaseDatabase.getInstance().getReference("users").push().child("phoneNumber").setValue(num).addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    Intent intent = new Intent(VerifyPhoneActivity.this, WelcomeActivity.class);

                                    startActivity(intent);

                                }
                            });
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });
            } else {
                Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
            }
        }
    });
}

Primeiro de tudo, você tem que logar o usuário com o detalhe de telefone, então você verificar se você tem qualquer usuário registrado com esse número de telefone, se o fizer, então isso significa que este usuário já entrou no aplicativo, mas se você não tem qualquer informações de usuário com esse número de telefone, então você criar a sua informação e dirigi-lo para a tela de boas-vindas depois de criar a sua informação, por isso, se este utilizador volta novamente você vai verificar se temos um registro de usuário com esse número de telefone (que fazemos) então desta vez ele será direcionado para a tela de perfil

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=363495&siteId=1
Recomendado
Clasificación