首页 > 解决方案 > 我无法使用 Android Studio Java 将用户添加到 Firebase Authetnication

问题描述

我查看了一些 Youtube 教程,在这里阅读了一些线程并试图掌握 Firebase 页面上的文档,但它似乎完全不适合我。我只是想添加手动编写的(在源代码中)用户来测试它,但这不起作用。尝试在两个“if”条件下编写“toast”消息,但似乎没有一个 toast 弹出。我可以通过他们的页面手动将用户添加到firebase,当我这样做并尝试添加同一个用户时,我想我已经有一次“用户创建”吐司了,但是当我再次尝试时,我什么也没得到,所以我什至不知道。

编辑:对不起,如果我说错了,但我不想添加到数据库中,我想添加到身份验证中,因为我得到了包含数据库的部分,但身份验证不起作用。

Edit2:要么是带有缓存/AVD的东西,要么我不知道,但在允许互联网(在清单上)之后,它似乎工作了。我不知道这是否有帮助,但我标记了答案,在该答案下添加该内容的评论是一种解决方案。

我的代码是:

public class MainActivity extends AppCompatActivity
{
    FirebaseAuth mAuth;
    FirebaseDatabase database;
    DatabaseReference myRef;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);;
        mAuth = FirebaseAuth.getInstance();
        database = FirebaseDatabase.getInstance();
        Button buttonLogin;
        buttonLogin = findViewById(R.id.loginLoginButton);
        buttonLogin.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                mAuth.createUserWithEmailAndPassword("example@example.com", "exempliore852").addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>()
                {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task)
                    {
                        if (task.isSuccessful())
                        {
                            Toast.makeText(MainActivity.this, "User created", Toast.LENGTH_LONG).show();
                        }
                        else
                        {
                            Toast.makeText(MainActivity.this, "Not successful!", Toast.LENGTH_LONG).show();
                        }
                    }
                });

            }
        });
  }

我在 logcat 中不断收到此错误:

2020-05-08 19:13:41.036 1791-2322/? E/GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8

完整的 logcat 错误(因为 Verbose logcat 对于 pastebin 来说太大了): https ://pastebin.com/2icthFwN

我做错了什么?

编辑:对不起,如果我说错了,但我不想添加到数据库中,我想添加到身份验证中,因为我得到了包含数据库的部分,但身份验证不起作用。

标签: javaandroidfirebasefirebase-authentication

解决方案


如果您尝试使用电子邮件和密码创建用户并将用户存储在 Firebase 数据库中,则必须编写将用户存储在数据库中的方法。看一看

 mAuth.createUserWithEmailAndPassword(edtEmail.getText().toString(), edtPassword.getText().toString())
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {

                        if (task.isSuccessful()) {

                            Toast.makeText(SignUpActivity.this, "Signing up successful.",
                                    Toast.LENGTH_SHORT).show();

                            // method to get username stored in database
                            FirebaseDatabase.getInstance().getReference()
                                    .child("users").child(task.getResult().getUser().getUid())
                                    .child("username")
                                    .setValue(edtUsername.getText().toString());

                            UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                                    .setDisplayName(edtUsername.getText().toString())
                                    .build();

                            FirebaseAuth.getInstance().getCurrentUser().updateProfile(profileUpdates)
                                    .addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {

                                            if (task.isSuccessful()) {

                                                Toast.makeText(SignUpActivity.this, "User " +
                                                        edtUsername.getText().toString() + " updated",
                                                        Toast.LENGTH_SHORT).show();
                                            }
                                        }
                                    });

                            transitionToMainActivity();
                        } else {

                            Toast.makeText(SignUpActivity.this, "Signing up failed.",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }
                });

推荐阅读