Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase无法在我的android应用程序中成功访问我的用户表_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Firebase无法在我的android应用程序中成功访问我的用户表

Firebase无法在我的android应用程序中成功访问我的用户表,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,经过数小时的思考,我终于找到了将Firebase与我的应用程序集成的方法。现在,我已经创建了一个Users表(如果我遵循Google的文档正确的话),并为我的第一个用户添加了字段 此外,我还制定了如下规则: service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } } 以下

经过数小时的思考,我终于找到了将Firebase与我的应用程序集成的方法。现在,我已经创建了一个Users表(如果我遵循Google的文档正确的话),并为我的第一个用户添加了字段

此外,我还制定了如下规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}
以下是我的登录片段:

public class SignInFragment extends Fragment {

    public static SignInFragment newInstance()
    {
        return new SignInFragment();
    }

    private FirebaseAuth mAuth;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_login,
                container, false);
        mAuth = FirebaseAuth.getInstance();

        final Button btnSignIn = view.findViewById(R.id.btnSignIn);
        final EditText email = view.findViewById(R.id.email_text);
        final EditText password = view.findViewById(R.id.password_Text);

        btnSignIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                GetUser(email.toString(), password.toString());
            }
        });    
        return view;
    }

    private void  GetUser(String email, String password) {
        mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success, update UI with the signed-in user's information
                            FirebaseUser user = mAuth.getCurrentUser();
                            Toast.makeText(getActivity(),"User found!",Toast.LENGTH_SHORT).show();
                        }
                        else{
                            Toast.makeText(getActivity(),"No user by that email!",Toast.LENGTH_SHORT).show();
                        }
                    }
                });
    }

}
公共类SignInFragment扩展片段{
公共静态SignInFragment newInstance()
{
返回新的SignInFragment();
}
私人消防队;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u登录,
货柜(虚假);;
mAuth=FirebaseAuth.getInstance();
最终按钮btnSignIn=view.findViewById(R.id.btnSignIn);
最终编辑文本电子邮件=view.findviewbyd(R.id.email\u text);
最终编辑文本密码=view.findviewbyd(R.id.password\u Text);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
GetUser(email.toString(),password.toString());
}
});    
返回视图;
}
私有void GetUser(字符串电子邮件、字符串密码){
mAuth.使用电子邮件和密码登录(电子邮件,密码)
.addOnCompleteListener(getActivity(),new OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
//登录成功,使用登录用户的信息更新UI
FirebaseUser=mAuth.getCurrentUser();
Toast.makeText(getActivity(),“用户已找到!”,Toast.LENGTH_SHORT.show();
}
否则{
Toast.makeText(getActivity(),“该电子邮件没有用户!”,Toast.LENGTH\u SHORT.show();
}
}
});
}
}

当我进入登录屏幕并输入与我的用户表中相同的电子邮件和密码时,它会显示“不正确的用户”toast消息。我已经检查了我的条目和所有匹配项。所以我的问题是:我做错了什么?我是否错过了更多进入用户表的步骤?还值得注意的是,我的代码完全基于Firebase助手,在Android Studio中的身份验证教程中

不要使用
email.toString()
使用
email.getText().toString()
而不要使用
email.toString()
使用
email.getText().toString()
真管用!非常感谢你。我还发现我必须进入Firebase控制台并启用电子邮件身份验证。耶,它成功了!非常感谢你。我还发现我必须进入Firebase控制台并启用电子邮件身份验证。