Firebase电子邮件用户身份验证

时间:2016-04-04 09:19:35

标签: java

`我正在尝试从用户动态提取电子邮件以创建帐户,但Firebase不断返回电子邮件错误...我想知道是否可以动态提取电子邮件或者您必须对电子邮件和密码进行硬编码。

final EditText email = (EditText)findViewById(R.id.new_email);
    final String newEmail = email.getText().toString();
    final EditText password = (EditText)findViewById(R.id.new_password);
    final String newPass = password.getText().toString();
    final EditText username = (EditText)findViewById(R.id.full_name);
    final String userName = username.getText().toString();


 @Override
        public void onClick(View v){
            rootRef.createUser(newEmail,newPass,new Firebase.ValueResultHandler<Map<String,Object>>(){
                @Override
                public void onSuccess(Map<String,Object> result){
                    rootRef.child("users").child(userName).child("User Name").setValue(userName);
                    rootRef.authWithPassword(newEmail,newPass,new Firebase.AuthResultHandler(){
                        @Override
                        public void onAuthenticated(AuthData authData){
                            Intent a = new Intent(CreateAccount.this,userHome.class);
                            startActivity(a);
                        }
                        @Override
                        public void onAuthenticationError(FirebaseError firebaseError){
                            text1.setText("An error occurred.Please try again");
                        }
                    });
                }
                @Override
                public void onError(FirebaseError firebaseError){
                    Fragment createAccount = new Fragment();
                    getSupportFragmentManager().beginTransaction().add(R.id.sign_up_fail,createAccount).commit();
                    switch (firebaseError.getCode()){
                        case FirebaseError.EMAIL_TAKEN:
                            text1.setText("That Email is already taken");
                            break;
                        case FirebaseError.INVALID_EMAIL:
                            text1.setText("That Email is invalid");
                            break;
                        case FirebaseError.NETWORK_ERROR:
                            text1.setText("Network Error.Check your connection.");
                    }
                }
            });
        }
    });

1 个答案:

答案 0 :(得分:0)

您可以发布Firebase返回的错误。

您不必硬编码电子邮件或密码,请查看他们的教程页面以获取Android用户身份验证:https://www.firebase.com/docs/android/guide/user-auth.html

*编辑*

以下是个人代码中可能对您有帮助的示例。

referencia.createUser(email.getText().toString(), senha.getText().toString(), new Firebase.ValueResultHandler<Map<String, Object>>()
    {
        @Override
        public void onSuccess(Map<String, Object> result)

我目前在功能齐全的应用上使用它。如果您的工作不正常,您可以发送错误消息。