使用电话号码登录用户

时间:2017-10-27 16:19:40

标签: android firebase login firebase-realtime-database firebase-authentication

我正在使用Messaging App。在我的应用程序中,可以注册一个人的电话号码。一切都很好。这一切都与Firebase有关。 Here is the official documentation, where I learned it.

  1. 但现在我遇到了问题。每次活动开始时,它都应该自动登录,对吗?我怎样才能做到这一点?

  2. 和一点点不同的问题。当用户使用FirebaseAuth.getInstance().signOut();注销时,他如何登录?因为他只用phonenumber创建了一个帐户,没有密码或任何东西....只有firebase发送的短信代码。

  3. 修改

    所以我尝试了这个:

    if(mFirebaseUser != null) mFirebaseUser.reload().addOnCompleteListener(this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if(!task.isSuccessful()) {
                    if (mFirebaseUser == null) {
                        String exc = task.getException().getMessage();
                        Log.d("FireBaseUser", exc);
                        mFirebaseAuth.getInstance().signOut();
                        startActivity(new Intent(ChatListActivity.this, LoginActivity.class));
                        finish();
                        Log.d("FireBaseUser", "User doesnt exist");
                        return;
                    }
                    else {
                        Log.d("FireBaseUser", "User is ok!");
                        return;
                    }
    
                }
                else{
                    Log.d("FireBaseUser", "????");
                }
            }
        });
    
        else {
            Log.d("FireBaseUser", "User is null");
        } }
        });
    

    但它不起作用。用户可以登录...我做错了什么?似乎代码不会运行。因为我在日志中看不到任何内容。每次我运行它发出的代码:User is null

2 个答案:

答案 0 :(得分:0)

1)我认为如果第一次认证成功,你应该在SharedPreferences中保存电话号码

答案 1 :(得分:0)

FirebaseUser mUser = mAuth.getCurrentUser();
if (mUser == null) {
    // not logged-in
    // show login activity
} else {
    // logged-in
    String phoneNumber = mUser.getPhoneNumber();
    // ...
}