Android 通过电子邮件和密码使用firebase注册用户?

Android 通过电子邮件和密码使用firebase注册用户?,android,firebase,firebase-authentication,registration,Android,Firebase,Firebase Authentication,Registration,我使用Firebase授权创建了register活动,并尝试注册新用户,但当我按下register按钮时,我的代码出现异常 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); etUsername = (EditText) findViewById(R.id.e

我使用Firebase授权创建了register活动,并尝试注册新用户,但当我按下register按钮时,我的代码出现异常

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);
    etUsername = (EditText) findViewById(R.id.etUserName);
    etEmail = (EditText) findViewById(R.id.etEmailRegiter);
    etPassword = (EditText) findViewById(R.id.etPasswordRegiter);
    etPasswordRe = (EditText) findViewById(R.id.etPasswordRegiterRe);

    register = (Button) findViewById(R.id.btnRegister);

    passwordRule = (LinearLayout) findViewById(R.id.password_rule);

    etPassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            passwordRule.setVisibility(View.VISIBLE);
        }
    });

    mAuth = FirebaseAuth.getInstance();
    register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            createAccount(etUsername.getText().toString(), etPassword.getText().toString());
        }
    });

}

private void createAccount(String email, String password) {
    Log.d(LOG_TAG, "createAccount:" + email);
//        if (!validateForm()) {
//            return;
//        }

    mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(LOG_TAG, "createUserWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();

                        Log.d(LOG_TAG, ":" + mDatabase.child(PATH_TO_DATA_USERS));

//                            sendEmailVerification();
//                            Intent intent = new Intent(getContext(), MainActivity.class);
//                            intent.putExtra("user", user.getUid());
//                            startActivity(intent);
                        }
                         else {
                            try {
                                throw task.getException();
                            } catch(FirebaseAuthWeakPasswordException e) {
                                etPassword.setError("weak password");
                                etPassword.requestFocus();
                            } catch(FirebaseAuthInvalidCredentialsException e) {
                                etEmail.setError("invalid credential exception");
                                etEmail.requestFocus();
                            } catch(FirebaseAuthUserCollisionException e) {
                                etEmail.setError("collision exception");
                                etEmail.requestFocus();
                            } catch(Exception e) {
                                Log.e(LOG_TAG, e.getMessage());
                            }
                            Log.w(LOG_TAG, "createUserWithEmail:failure", task.getException());
                            Log.d(LOG_TAG, ":" + (mAuth == null));
                            Toast.makeText(RegisterActivity.this, "Authentication failed.",
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                });
    }
顺便说一下,我试图通过控制台自己创建新用户来注册。它运行良好,我可以与此用户签名

这是我的gradle

compile 'com.google.firebase:firebase-database:10.0.1'
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.firebase:firebase-auth:10.0.1'

可能用户输入的电子邮件无效。电子邮件应采用以下格式=
”myname@domain.com“
。如果与格式不匹配,则服务器会给出该错误。试着用那种格式写封电子邮件。我建议您在此处阅读更多有关身份验证的信息:以下是有关firebase错误代码的更多信息:

编辑: 您正在向电子邮件变量发送“用户名”,而不是“电子邮件”
以下是您需要修复的代码:
createAccount(etUsername.getText().toString(),etPassword.getText().toString())
您正在发送用户名而不是电子邮件,这就是服务器称您的电子邮件无效的原因。将其更改为
etEmail


请记住,当您注册时,您使用的是电子邮件而不是用户名

可能是用户输入的电子邮件无效。电子邮件应采用以下格式=
”myname@domain.com“
。如果与格式不匹配,则服务器会给出该错误。试着用那种格式写封电子邮件。我建议您在此处阅读更多有关身份验证的信息:以下是有关firebase错误代码的更多信息:

编辑: 您正在向电子邮件变量发送“用户名”,而不是“电子邮件”
以下是您需要修复的代码:
createAccount(etUsername.getText().toString(),etPassword.getText().toString())
您正在发送用户名而不是电子邮件,这就是服务器称您的电子邮件无效的原因。将其更改为
etEmail


请记住,当您注册时,您使用的是电子邮件而不是用户名

我也开始使用Firebase,我正在使用此代码在我的应用程序中注册新用户,效果很好

public void doRegister(final String username, String password) {

    HideAppApplication.mAuth.createUserWithEmailAndPassword(username, password)
            .addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d("LOGIN", "createUserWithEmail:onComplete:" + task.isSuccessful());

                    if (task.isSuccessful()){
                        User user = new User();
                        user.setUserId(username);
                        DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("user");
                        mDatabase.child(task.getResult().getUser().getUid()).setValue(user);
                    }

                    onRegisterRequested.registerRequested(task);
                }
            });
}
public void doRegister(最终字符串用户名、字符串密码){
HideAppApplication.mAuth.createUserWithEmailAndPassword(用户名、密码)
.addOnCompleteListener(活动,如果需要,请新建OnCompleteListener)


希望这可以解决您的问题。

我也开始使用Firebase,我正在使用此代码在我的应用程序中注册新用户,效果很好

public void doRegister(final String username, String password) {

    HideAppApplication.mAuth.createUserWithEmailAndPassword(username, password)
            .addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d("LOGIN", "createUserWithEmail:onComplete:" + task.isSuccessful());

                    if (task.isSuccessful()){
                        User user = new User();
                        user.setUserId(username);
                        DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("user");
                        mDatabase.child(task.getResult().getUser().getUid()).setValue(user);
                    }

                    onRegisterRequested.registerRequested(task);
                }
            });
}
public void doRegister(最终字符串用户名、字符串密码){
HideAppApplication.mAuth.createUserWithEmailAndPassword(用户名、密码)
.addOnCompleteListener(活动,如果需要,请新建OnCompleteListener)


希望这能解决您的问题。

您是否尝试过再发一封电子邮件?是的,但在中没有帮助?您尝试过再发一封电子邮件吗?是的,但在中没有帮助。实际上,我尝试过注册我的电子邮件和gmail地址,但在这两种情况下,我都收到了相同的邮件error@AssetBekbossynov在你写邮件时,检查邮件的额外空间和格式请在您的问题中输入您的firebase身份验证代码我尝试注册了10次我的电子邮件,我想我至少写了一次正确的电子邮件))@AssetBekbossynov您能在问题中包含您的代码吗?(使用编辑再次输入代码)还有你的xml代码。我把创建用户的方法包括在我的答案中。实际上我试着注册我的电子邮件和gmail地址,但在这两种情况下我得到的都是一样的error@AssetBekbossynov在你写邮件的时候检查邮件的额外空间和格式,请在你的问题中输入你的firebase认证码。我试着注册了10次是我的电子邮件,我想我至少写过一次正确的电子邮件。)@AssetBekbossynov你能在问题中包含你的代码吗?(使用编辑再次输入代码)以及你需要的xml代码。我在回答中包含了我创建用户的方法。
public void doRegister(final String username, String password) {

    HideAppApplication.mAuth.createUserWithEmailAndPassword(username, password)
            .addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d("LOGIN", "createUserWithEmail:onComplete:" + task.isSuccessful());

                    if (task.isSuccessful()){
                        User user = new User();
                        user.setUserId(username);
                        DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("user");
                        mDatabase.child(task.getResult().getUser().getUid()).setValue(user);
                    }

                    onRegisterRequested.registerRequested(task);
                }
            });
}