使用电子邮件密码创建用户和使用Firebase中的凭据创建用户之间的区别

时间:2019-01-07 14:02:16

标签: android firebase firebase-authentication

我有一个使用用户名,密码,电子邮件和当前地址进行用户注册的应用程序。但是我只知道如何使用电子邮件和密码进行注册。 现在,我需要使用名称,密码,电子邮件,currentAddress进行注册。可能吗?在Firebase中使用电子邮件密码创建用户和使用凭据创建用户之间的区别是什么类型的区别? 我执行以下操作:

final String password = mPassword.getText().toString();

// final String name = mName.getText().toString();


final String email = mEmail.getText().toString();
//final String currentAddress = mCurrentAddress.getText().toString();

mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(DriverLoginActivity.this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if (!task.isSuccessful()) {
            Toast.makeText(DriverLoginActivity.this, "Signup error", Toast.LENGTH_SHORT).show();
        } else {
            String user_id = mAuth.getCurrentUser().getUid();
            DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("drivers").child(user_id).child("name");
            current_user_db.setValue(email);
        }

    }
});

这是我的错误报告:

  

java.lang.NullPointerException           在com.example.raifu.mapforinto.DriverLoginActivity $ 2.onClick(DriverLoginActivity.java:60)           在android.view.View.performClick(View.java:4438)           在android.view.View $ PerformClick.run(View.java:18422)           在android.os.Handler.handleCallback(Handler.java:733)           在android.os.Handler.dispatchMessage(Handler.java:95)           在android.os.Looper.loop(Looper.java:136)           在android.app.ActivityThread.main(ActivityThread.java:5019)

2 个答案:

答案 0 :(得分:1)

创建并用于Firebase身份验证的<input type='{{(showPassword)? text : password }}' /> <i class='{{(showPassword)? icon-eye-open : icon-eye-close }}' ng-click='togglePassword()' ><i/> 对象仅允许您创建和访问FirebaseUser以及与您的使用无关的其他一些字段。 https://firebase.google.com/docs/reference/android/com/google/firebase/auth/FirebaseUser

很遗憾,您无法从getEmail(), getDisplayName(), getPhotoUrl()对象中添加,修改或删除任何字段,例如名称,地址等。

您需要做的是为您的FirebaseUser的特定实现创建一个模型类,并将其存储在Firebase Firestore中,并使其同步到在Firebase身份验证中创建并存储的User。 / p>

EDIT1

您需要创建一个用户模型,在您的情况下,该模型可能看起来像这样:

FirebaseUser

使用Firebase身份验证注册用户时,您将在Firestore数据库中使用User类在其后创建一个字段,其中包含有关要存储的用户的所有有用信息。

此处是有关如何执行整个过程的详细视频(Android中使用自定义用户字段进行Firebase身份验证)。 https://www.youtube.com/watch?v=7Yc3Pt37coM

答案 1 :(得分:1)

如果您想向用户注册许多信息,例如姓名,年龄,性别,出生日期等,那么您最好使用Firebase数据库。 firebase用户对象也很有帮助,但它受到限制。