用户注册期间如何在Firebase的实时数据库中存储数据?

ian7

我正在制作具有用户个人资料的类似socialmedia的应用程序。我想在使用他们的uid注册时保存他们的个人资料数据。尽管注册成功,但配置文件未保存在Firebase数据库中。我还检查了规则,并为经过身份验证的用户设置了读写权限。

这是我的代码:

public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {

private Button btn_reg;
private EditText etName, etEmail, etPassword, etCPassword, etMobile, etSchoolCompany, etLocation;
private ProgressDialog progressDialog;
private FirebaseAuth firebaseAuth;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    Firebase.setAndroidContext(this);

    firebaseAuth = FirebaseAuth.getInstance();

    progressDialog = new ProgressDialog(this);

    btn_reg = (Button)findViewById(R.id.btnRegister);
    etName = (EditText)findViewById(R.id.etName);
    etEmail = (EditText)findViewById(R.id.etEmail);
    etPassword = (EditText)findViewById(R.id.etPassword);
    etCPassword = (EditText)findViewById(R.id.etCPassword);
    etMobile = (EditText)findViewById(R.id.etMobile);
    etSchoolCompany = (EditText)findViewById(R.id.etSchoolCompany);
    etLocation = (EditText)findViewById(R.id.etLocation);

    btn_reg.setOnClickListener(this);
}

@Override
public void onClick (View view){
    if(view == btn_reg){
        registerUser();
    }
}

private void registerUser(){
    String name = etName.getText().toString();
    String mobile = etMobile.getText().toString();
    String SchoolCompany = etSchoolCompany.getText().toString();
    String location = etLocation.getText().toString();
    final String email = etEmail.getText().toString().trim();
    final String password = etPassword.getText().toString().trim();
    String cpassword = etCPassword.getText().toString().trim();

    progressDialog.setMessage("Registering..");
    progressDialog.show();

    //REGISTERING USER
    firebaseAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if(task.isSuccessful()){

                        //THIS IS FOR STORING AUTHENTICATED USER'S DATA
                        final Firebase ref = new Firebase("https://myfirebase.firebaseio.com");
                        ref.authWithPassword(email, password, new Firebase.AuthResultHandler(){
                            @Override
                            public void onAuthenticated(AuthData authData){
                                // Authentication just completed successfully :)
                                Map<String, String> map = new HashMap<String, String>();
                                map.put("provider", authData.getProvider());
                                if(authData.getProviderData().containsKey("displayName")) {
                                    map.put("displayName", authData.getProviderData().get("displayName").toString());
                                }
                                ref.child("users").child(authData.getUid()).setValue(map);
                            }
                            @Override
                            public void onAuthenticationError(FirebaseError error) {
                //ERRORS TODO
                            }
                        });
                        progressDialog.hide();
                        Toast.makeText(RegisterActivity.this, "Registered Successfully", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(RegisterActivity.this, "Registration failed, please try again", Toast.LENGTH_SHORT).show();
                    }
                }

            });
}


}
威力克

来自createUserWithEmailAndPassword方法参考

尝试使用给定的电子邮件地址和密码创建一个新的用户帐户。如果成功,它还将使用户登录到该应用程序。

这意味着注册过程完成后,您无需再次验证用户身份。

为确保任务已完成且firebaseUser值不为null,最好将其添加AuthStateListener到您FirebaseAuthonComplete方法中,而不是将数据保存到方法内部,该代码在官方指南中

如果用户已通过身份验证,则可以保存数据。

public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
    FirebaseUser user = firebaseAuth.getCurrentUser();
    if (user != null) {
        DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
        Map<String, String> map = new HashMap<>();
        map.put("provider", user.getProviders().get(0));
        if(user.getProviderData().containsKey("displayName")) {
            map.put("displayName", user.getProviderData().get("displayName").toString());
        }
        ref.child("users").child(user.getUid()).setValue(map);
    } 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Firebase实时数据库中删除?

来自分类Dev

Firebase实时数据库addValueEventListener

来自分类Dev

如何从Firebase中的实时数据库获取数据

来自分类Dev

如何在firebase auth和firebase-实时数据库中获得相同的ID?

来自分类Dev

React + Firebase:如何添加项目以将数据列表到firebase实时数据库中

来自分类Dev

数据更改后如何从Firebase实时数据库中检索特定数据

来自分类Dev

如何通过导出功能从Firebase实时数据库中获取用户孩子的价值

来自分类Dev

如何从Firebase实时数据库读取数据

来自分类Dev

将Firebase实时数据库数据存储在Firestore中?

来自分类Dev

如何在GCP中启用Firebase实时数据库?

来自分类Dev

Firebase实时数据库-规则

来自分类Dev

如何在flutter中从Firebase实时数据库中获取数据?

来自分类Dev

如何更新Firebase实时数据库中的位置?

来自分类Dev

如何在 Firebase 实时数据库 Android 中实现等效的 .contains(SomeText)?

来自分类Dev

从 Firebase 实时数据库中检索子数据

来自分类Dev

如何从firebase实时数据库中选择数据

来自分类Dev

如何在android studio 3.0中连接firebase并通过按钮将数据存储在实时数据库中

来自分类Dev

Firebase 实时数据库中的数据插入无限

来自分类Dev

在实时数据库中存储 Firebase 云消息

来自分类Dev

如何从android中的firebase实时数据库中获取数据

来自分类Dev

Firebase 实时数据库中的存储大小是如何计算的?

来自分类Dev

如何在不登录的情况下从 firebase 实时数据库获取用户 ID(UID)

来自分类Dev

Firebase 实时数据库,从键值对中获取数据

来自分类Dev

删除 firebase 实时数据库中的数据时,如何从列表中删除特定项目?

来自分类Dev

如何从firebase存储获取imageUrl以存储在firebase实时数据库中?

来自分类Dev

如何在 Firebase 实时数据库中获取子名称

来自分类Dev

如何获取firebase实时数据库的数据

来自分类Dev

如何在实时数据库 FIREBASE 中检查数据

来自分类Dev

无法从 Firebase 实时数据库中检索数据

Related 相关文章

  1. 1

    如何从Firebase实时数据库中删除?

  2. 2

    Firebase实时数据库addValueEventListener

  3. 3

    如何从Firebase中的实时数据库获取数据

  4. 4

    如何在firebase auth和firebase-实时数据库中获得相同的ID?

  5. 5

    React + Firebase:如何添加项目以将数据列表到firebase实时数据库中

  6. 6

    数据更改后如何从Firebase实时数据库中检索特定数据

  7. 7

    如何通过导出功能从Firebase实时数据库中获取用户孩子的价值

  8. 8

    如何从Firebase实时数据库读取数据

  9. 9

    将Firebase实时数据库数据存储在Firestore中?

  10. 10

    如何在GCP中启用Firebase实时数据库?

  11. 11

    Firebase实时数据库-规则

  12. 12

    如何在flutter中从Firebase实时数据库中获取数据?

  13. 13

    如何更新Firebase实时数据库中的位置?

  14. 14

    如何在 Firebase 实时数据库 Android 中实现等效的 .contains(SomeText)?

  15. 15

    从 Firebase 实时数据库中检索子数据

  16. 16

    如何从firebase实时数据库中选择数据

  17. 17

    如何在android studio 3.0中连接firebase并通过按钮将数据存储在实时数据库中

  18. 18

    Firebase 实时数据库中的数据插入无限

  19. 19

    在实时数据库中存储 Firebase 云消息

  20. 20

    如何从android中的firebase实时数据库中获取数据

  21. 21

    Firebase 实时数据库中的存储大小是如何计算的?

  22. 22

    如何在不登录的情况下从 firebase 实时数据库获取用户 ID(UID)

  23. 23

    Firebase 实时数据库,从键值对中获取数据

  24. 24

    删除 firebase 实时数据库中的数据时,如何从列表中删除特定项目?

  25. 25

    如何从firebase存储获取imageUrl以存储在firebase实时数据库中?

  26. 26

    如何在 Firebase 实时数据库中获取子名称

  27. 27

    如何获取firebase实时数据库的数据

  28. 28

    如何在实时数据库 FIREBASE 中检查数据

  29. 29

    无法从 Firebase 实时数据库中检索数据

热门标签

归档