火力地堡.getUID NullPointerException异常认证介绍
的时候我会在我注册数据添加到数据库中,但我得到了
火力地堡.getUID NullPointerException异常认证介绍
显示java.lang.NullPointerException:试图调用虚拟方法java.lang.String中com.google.firebase。 auth.FirebaseUser.getUid()”空引用对象上的
我试一下,但是不工作
这里是我的代码
auth = FirebaseAuth.getInstance();
database = FirebaseDatabase.getInstance();
mRef = database.getReference();
FirebaseUser user = auth.getCurrentUser();
userID = user.getUid();
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String fname = etFname.getText().toString().trim();
final String lname = etLname.getText().toString().trim();
final String id_card = etIdCard.getText().toString().trim();
final String email = etEmail.getText().toString().trim();
final String mobile = etMobile.getText().toString().trim();
String password = etPassword.getText().toString().trim();
if (TextUtils.isEmpty(email)){
Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(password)){
Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(fname)){
Toast.makeText(getApplicationContext(), "Enter FirstName!", Toast.LENGTH_SHORT).show();
return;
}
if (password.length() < 8) {
Toast.makeText(getApplicationContext(), "Password too short, enter minimum 8 characters!", Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE);
auth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
UserInfo userInfo = new UserInfo(fname,lname,id_card,mobile,email);
mRef.child("users").child(userID).setValue(userInfo);
etFname.setText("");
etLname.setText("");
etIdCard.setText("");
etMobile.setText("");
etEmail.setText("");
Toast.makeText(RegisterActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(RegisterActivity.this, "Register Successfully" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
finish();
}
}
});
}
});
}
现在得到像这样的新错误 java.lang.NoSuchMethodError:在类Lcom/google/firebase/FirebaseApp中没有虚方法zzTt()Z;或其超类(“com.google.firebase.FirebaseApp”的声明出现在/data/app/com.example.androiddev.army31-1/split_lib_dependencies_apk.apk:classes36.dex)
现在我可以修复它因为gradle这个不是同一版本
编译,得到了相同的事情
什么是你在代码中提到身份验证的类型,使用单线替换它,并检查是否正常工作
String mUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
您还可以检查完整的工作代码示例的文档:https://firebase.google.com/docs/auth/android/manage-users
FirebaseUser user = auth.getCurrentUser();
userID = user.getUid();
要运行上面两行,你必须(我讲你必须)已用户名/密码基于在认证Firebase。由于大多数新手程序员忘记在Firebase控制台中设置基于用户的身份验证,因此它抛出了NullPointerException
。
您可以将用户添加到Firebase身份验证中。
如果您使用Firebase实时数据库那么我建议您在RULES选项卡中添加以下规则。
// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
"rules": {
"users": {
"$user_id": {
".read": "$user_id === auth.uid",
".write": "$user_id === auth.uid"
}
}
}
}
谢谢答复,但我SER { “规则”:{ “.read”:true, “.write”:true } } –
查看我更新的答案,我正在谈论身份验证,您可以忘记RULES。 –
好吧,我得到它改变,但有新问题 split_lib_dependencies_apk.apk:classes36.dex) –
检查:
if(auth.getCurrentUser() != null){
uid = auth.getCurrentUser().getUID();
}
感谢您的回复,但它不起作用 即时更新我的代码plz请参阅 –
感谢答复遗憾呐如何使用您的代码?我不确定 –
单个班轮和他做了什么之间的区别是什么?没有,这是基本的Java –
请参考文档完整的工作代码Java中[email protected] – Pheonix