首页 > 解决方案 > firebase 中创建帐户的结果为 true,但未在 firebase 控制台中添加

问题描述

(应用程序流程)注册->在firebase身份验证中创建帐户,sharedpreference.put(电子邮件和密码)用于自动登录,将用户信息保存在firebase中的数据库中->登录-> mainActivity

在我发布 apk 和 proguard 之前,它运行良好,没有任何问题。但是在我遇到 proguard 问题后,我消除了 proguard 规则并在 gradle 中将 minifyEnabled true 更改为 false。

然后我重建并运行我的应用程序。

FirebaseAuth.createUserWithEmailAndPassword 的结果为真。UserData 上传的结果为真。登录的结果也为真。

一切成功后,我检查了我的 firebase 控制台。但是没有添加新的身份验证数据。并且创建了用户数据,但每个信息都是空的。Sharedpreference 也是空的。

当它运行良好时,我检查了我以前的代码。所有代码都是一样的。我整天搜索,但我没有得到任何处理它的提示。

==FirebaseAuth 类 ===

public void singUp(String userEmail, String userPwd) {

    firebaseAuth.createUserWithEmailAndPassword(userEmail,userPwd)
            .addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                   firebaseAuthListener.onSignUpComplete(true);
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                   firebaseAuthListener.onSignUpComplete(false);
                   if(e instanceof FirebaseAuthUserCollisionException) {
                       signUpErrorListener.setErrorMessage("이미 사용 중인 이메일입니다. 다시 시도해주세요.");
                   }
                }
            });

}

public void login(final String userEmail, String userPwd){
    firebaseAuth.signInWithEmailAndPassword(userEmail,userPwd)
            .addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                    firebaseLoginListener.onLoginComplete(true);
                }
            }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            firebaseLoginListener.onLoginComplete(false);
        }
    });
}

public void userDataUpload(final UserData userData){
    firestore.collection("User")
            .add(userData).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
        @Override
        public void onSuccess(DocumentReference documentReference) {
            firebaseAuthListener.onUserDataComplete(true);
            String recording_key = documentReference.getId();
            recordingKeyListener.onSaveRecordKey(recording_key);
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            firebaseAuthListener.onUserDataComplete(false);
        }
    });
}

==注册类 =====

    complete_btn.setOnClickListener(this);

@Override
public void onClick(View view) {
    int id = view.getId();
    switch (id){
        case R.id.complete_btn:
            boolean check_pw = checkPassword(userPassword_textInput,check_userpw_textInput);
            if(check_pw) {
                if(isSignUpSuccess) {
                    isComplete();
                }else{
                    onSignUpComplete(true);
                }
            }else{
                Toast.makeText(this, "비밀번호 일치 오류입니다. 다시 입력해주세요.", Toast.LENGTH_SHORT).show();
            }
            break;
    }

}

private boolean checkPassword(TextInputLayout userPassword_textInput, TextInputLayout check_userpw_textInput) {

   return true when passwords are same / return false in the other case
}

private void isComplete() {
    userEmail = changeToString(userEmail_textInput);
    userPwd = changeToString(userPassword_textInput);
    userAge = changeToString(userAge_textInput);
    userName = changeToString(userName_textInput);


        singUp();
    }

}

private void singUp() {
    setUserData();
    firebaseAuthData.singUp(userEmail, userPwd);
}
private void setUserData(){
    userData.setUserName(userName);
    userData.setUserEmail(userEmail);
    userData.setUserAge(userAge);
    userData.setUserGender(userSex);
    userData.setUserJob(userJob);
}



@Override
public void onSignUpComplete(boolean isSuccess) {
    this.isSignUpSuccess = isSuccess;
    if(isSuccess){
        firebaseAuthData.userDataUpload(userData);
        SharedPreference sharedPreference = new SharedPreference();
        sharedPreference.put(this,"email",userEmail);
        sharedPreference.put(this,"pwd",userPwd);
    }else{
        Toast.makeText(this, "회원가입에 실패하였습니다.", Toast.LENGTH_SHORT).show();
        LoadingProgress.dismissDialog();
    }
}

@Override
public void onUserDataComplete(boolean isSuccess) {
    LoadingProgress.dismissDialog();
    if(isSuccess){
        goNext(MainActivity.class);
    }else{
        Toast.makeText(this, "회원가입 실패 ", Toast.LENGTH_SHORT).show();
    }
}

}

如果创建身份验证数据的结果为真,则应在我的 Firebase 控制台中添加新的帐户信息。同时,使用共享偏好将用户的电子邮件和密码保存在用户的设备中,并使用用户输入的信息不为空创建用户数据。

标签: android

解决方案


=====SignUp Class=======(全局变量)//用于检查创建的用户帐户但未在数据库中设置 userData

Boolean isSignUpSuccess = true;
complete_btn.setOnClickListener(this);

@Override
public void onClick(View view) {
int id = view.getId();
switch (id){
    case R.id.complete_btn:
        boolean check_pw = checkPassword(userPassword_textInput,check_userpw_textInput);
        if(check_pw) {
            if(isSignUpSuccess) {
                isComplete();
            }else{
                onSignUpComplete(true);
            }
        }else{
            Toast.makeText(this, "비밀번호 일치 오류입니다. 다시 입력해주세요.", Toast.LENGTH_SHORT).show();
        }
        break;
}

}

推荐阅读