java - 我无法使用 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
我做错了什么?
编辑:对不起,如果我说错了,但我不想添加到数据库中,我想添加到身份验证中,因为我得到了包含数据库的部分,但身份验证不起作用。
解决方案
如果您尝试使用电子邮件和密码创建用户并将用户存储在 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();
}
}
});
推荐阅读
- java - Java11 迁移/JavaFX - 源错误
- python-3.x - 如何解决由 CGIRootFix 引起的 404 错误?
- javascript - 在 Javascript 中重构对象
- javascript - 以角度设置默认时区
- c# - 从对象的实体 IQueryable 列表中选择单个对象
- typescript - TSLint - 必须使用“finally”适当处理承诺
- python - Arcade 库需要 Python 3.6 或更高版本
- openapi - 如何在 OpenAPI 3.0 的模式中使用 $ref?
- visual-studio - 如何让 Visual Studio Community 2017 知道我的机器上已经安装了 .NET Core 2.1.500?
- angular - 从角度的子组件调用父组件的html id