经过数小时的研究,我终于设法做到了如何将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();
}
}
});
}
}
当我进入登录屏幕并输入与我的用户表相同的电子邮件和密码时,它向我显示“不正确的用户”吐司消息。我已经检查了我的输入,并且一切都匹配。所以我的问题是:我在做什么错?我是否缺少更多访问“用户”表的步骤?还值得注意的是,我的代码完全基于Android Studio身份验证教程中的Firebase Assistant。
答案 0 :(得分:2)
使用email.toString()
代替使用email.getText().toString()