【问题标题】:result of creation account in firebase is true but it's not added in firebase consolefirebase 中创建帐户的结果为 true,但未在 firebase 控制台中添加
【发布时间】:2019-01-14 11:53:24
【问题描述】:

(申请流程) 注册 -> 在 firebase 身份验证中创建帐户,sharedpreference.put(email & pw) 用于自动登录,将用户信息保存在 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 控制台中添加新的帐户信息。同时,使用共享偏好将用户的电子邮件和密码保存在用户的设备中,并使用用户输入的信息不为空创建用户数据。

【问题讨论】:

  • 请阅读如何创建complete and MINIMAL 示例。我们不需要也不想阅读 300 行代码。首先,您必须隔离您的问题,然后在这里询问您是否在互联网上找不到任何东西。所以必须是你最后的手段。
  • 对不起,我编辑了。
  • 我发现问题出在哪里!!由于 onClick Listener 代码,“isSignUpSuccess”第一次初始化为 false,它变为 true 并且运行良好。 if(isSignUpSuccess) { isComplete(); }else{ onSignUpComplete(true); }

标签: android


【解决方案1】:

=====注册类======= (全局变量) //用于检查创建的用户帐户但不设置数据库中的用户数据

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;
}

}

【讨论】:

    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 2019-01-31
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2016-09-21
    相关资源
    最近更新 更多