应用程序一直挂在应用程序试图访问firebase数据库的地方。 我的应用程序显示它一直在加载。 错误日志显示
E/fragment1:com.google.Firebase.Database.DatabaseException:Firebase数据库错误:拒绝权限
安全规则:
{
"rules": {
"bibles":{
".read": "auth!=null",
".write": "auth!=null"
}
}
}
当我关闭我的应用程序并重新打开它时,它就可以访问数据库,因此它可以完美地运行,并在我的仪表板上创建一个新的身份验证uid。
当我查看创建当前用户的代码时。 这是密码。 正如您在下面的代码中看到的,有一个名为“!!!!MCurrentUser”的日志。 新安装应用程序时,不应打印此日志。 但在我删除应用程序并重新安装后,不知何故,应用程序打印出“!!!!mCurrentUser”。 所以我猜firebase数据库系统会以某种方式识别出我的手机为当前用户,即使我删除了应用程序。 有人对此有什么想法吗? 提前谢谢你。
mAuth = FirebaseAuth.getInstance();
mCurrentUser = mAuth.getCurrentUser();
if (mCurrentUser == null) {
Log.d("UserNull", "test");
mAuth.signInAnonymously().addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d("signIn", "test");
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
//TODO: Intent
//
Intent intent = new Intent(getBaseContext(), MainActivity.class);
startActivity(intent);
}
});
} else {
//TODO: Intent
Intent intent = new Intent(getBaseContext(), MainActivity.class);
startActivity(intent);
}
} else {
Log.d("authentication failed", "failed");
}
}
});
} else {
Log.d("!!!!mCurrentUser", String.valueOf(mCurrentUser.getUid()));
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override public void run() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
//TODO: Intent
//
Intent intent = new Intent(getBaseContext(), MainActivity.class);
startActivity(intent);
}
});
} else {
//TODO: Intent
Intent intent = new Intent(getBaseContext(), MainActivity.class);
startActivity(intent);
}
}
}, 1000);
}
}
我猜这个问题是由于firebase权限造成的,所以我建议您查看此链接以获得更多详细信息:
https://firebase.google.com/docs/database/security/quickstart