You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用Firebase用户登录失败问题求助

问题描述

在Android应用的「owners」模块中输入正确邮箱和密码后,出现运行时错误,错误日志如下:

E/RecaptchaCallWrapper: Initial task failed for action RecaptchaAction(action=custom_signInWithPassword)with exception - There is no user record corresponding to this identifier. The user may have been deleted.

预期登录成功后跳转至个人资料页面,以下是我的owner_login.java代码:

public class owner_login extends AppCompatActivity {
    EditText textEmail, textPswd;
    Button buttonSignupOwner, buttonLogin;
    FirebaseAuth mAuth;
    private DatabaseReference mDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_owner_login);
        FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(true);
        FirebaseAnalytics.getInstance(this).setUserProperty("debug", "true");
        mAuth = FirebaseAuth.getInstance();
        mDatabase = FirebaseDatabase.getInstance().getReference().child("owners");
        textEmail = findViewById(R.id.editTextEmail);
        textPswd = findViewById(R.id.editTextPassword);
        buttonLogin = findViewById(R.id.buttonLogin);
        buttonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = textEmail.getText().toString().trim();
                String password = textPswd.getText().toString().trim();
                if (TextUtils.isEmpty(email)) {
                    textEmail.setError("Email is required");
                    return;
                }
                if (TextUtils.isEmpty(password)) {
                    textPswd.setError("Password is required");
                    return;
                }
                mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener < AuthResult > () {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            FirebaseUser user = mAuth.getCurrentUser();
                            String userId = user.getUid();
                            mDatabase.child(userId).addValueEventListener(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot snapshot) {
                                    String username = snapshot.child("username").getValue(String.class);
                                    String email = snapshot.child("email").getValue(String.class);
                                    Intent intent = new Intent(owner_login.this, owners_Profile.class);
                                    intent.putExtra("username", username);
                                    intent.putExtra("email", email);
                                    startActivity(intent);
                                    finish();
                                }
                                @Override
                                public void onCancelled(@NonNull DatabaseError error) {
                                    Toast.makeText(owner_login.this, "Failed to retrieve user information", Toast.LENGTH_SHORT).show();
                                }
                            });
                        } else {
                            Toast.makeText(owner_login.this, "Authentication failed", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }
        });
    }
}
解决方法

1. 验证Firebase Auth中是否存在该用户

错误提示明确说明无对应用户记录,先做以下确认:

  • 登录Firebase控制台,检查Authentication > 用户列表中是否存在该邮箱对应的账号
  • 确认账号未被删除或禁用
  • 检查输入的邮箱是否完全匹配(注意大小写、特殊字符,Firebase Auth邮箱不区分大小写,但输入时的空格已被trim,仍需仔细核对)

2. 优化错误提示,精准定位问题

当前代码仅显示模糊的“Authentication failed”,建议修改失败分支,直接展示Firebase返回的具体错误信息:

} else {
    String errorMsg = task.getException() != null ? task.getException().getMessage() : "Unknown error";
    Toast.makeText(owner_login.this, errorMsg, Toast.LENGTH_SHORT).show();
}

3. 确认用户注册时的关联逻辑

如果用户是通过应用内注册流程创建的,需确保注册环节同时完成两件事:

  • 调用createUserWithEmailAndPassword创建Firebase Auth用户
  • 将用户信息(username、email等)写入Firebase Database的owners/{userId}节点
    若只写了数据库但未创建Auth用户,就会出现“数据库有记录但Auth无用户”的矛盾,导致登录失败。

4. 检查ReCAPTCHA配置

错误日志涉及RecaptchaCallWrapper,需确认:

  • Firebase项目已启用ReCAPTCHA保护
  • 应用的SHA-1指纹已正确添加到Firebase控制台的项目设置中

内容的提问来源于stack exchange,提问作者Hasini Thilakarathna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:12:51