Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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
Android Firebase错误:权限被拒绝。无法从Firebase数据库读取/写入_Android_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Android Firebase错误:权限被拒绝。无法从Firebase数据库读取/写入

Android Firebase错误:权限被拒绝。无法从Firebase数据库读取/写入,android,firebase,firebase-realtime-database,firebase-security,Android,Firebase,Firebase Realtime Database,Firebase Security,我需要只向经过身份验证的用户授予读/写访问权限,但Firebase似乎没有识别出该用户经过身份验证 在我使用电子邮件和密码登录用户后,我假设用户已通过身份验证,应该允许从数据库读/写。然而,许可被拒绝 以下是登录活动的代码: firebaseAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

我需要只向经过身份验证的用户授予读/写访问权限,但Firebase似乎没有识别出该用户经过身份验证

在我使用电子邮件和密码登录用户后,我假设用户已通过身份验证,应该允许从数据库读/写。然而,许可被拒绝

以下是登录活动的代码:

 firebaseAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            //checking if success
            if(task.isSuccessful()){
                //display some message here
                // Toast.makeText(Register.this,"Successfully registered",Toast.LENGTH_LONG).show();


                sRef.authWithPassword(email,password,new Firebase.AuthResultHandler() {

                    @Override
                    public void onAuthenticated(AuthData authData) {
                        Toast.makeText(Register.this, user.getDisplayName()+" is authenticated",Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onAuthenticationError(FirebaseError firebaseError) {
                    }
                });

                Intent i = new Intent(Register.this,MainActivity.class);

                startActivity(i);

            }else{
                //display some message here
                Toast.makeText(Register.this, task.getException().getMessage(),Toast.LENGTH_LONG).show();
            }

        }
    });
但当我更改如下规则时,我的代码就能够获得对数据库的读/写访问权限

{
"rules": {
".read": true,
".write":true
}
}

这在测试中是很好的,但是我不能用这种方法继续生产。请帮助,如何验证注册用户以访问Firebase中的数据库

您的代码是来自遗留2.x.x的API调用的混合体。SDK,例如:

sRef.authWithPassword(电子邮件、密码、新Firebase.AuthResultHandler()

以及新的9.x.x SDK:

firebaseAuth.signiWithEmailandPassword()

这两个SDK不兼容。您需要使用或另一个。说明了如何从旧SDK迁移到新SDK


您还需要使用Firebase控制台,该控制台对应于所用SDK:或新SDK。

您的代码是来自旧版2.x.x.SDK的API调用的混合体,例如:

sRef.authWithPassword(电子邮件、密码、新Firebase.AuthResultHandler()

以及新的9.x.x SDK:

firebaseAuth.signiWithEmailandPassword()

这两个SDK不兼容。您需要使用或另一个。说明了如何从旧SDK迁移到新SDK


您还需要使用与所用SDK相对应的Firebase控制台:或新的。

您共享的任何代码都无法访问数据库,因此它还不能引发该错误。请共享。您在登录之前是否启用了firbase登录方法,如电子邮件/密码或匿名身份验证部分。我没有共享访问Firebase的代码数据库,因为它正在工作,但仅当我将规则更改为公共时。当我使用默认规则时,权限被拒绝。@DhavalkumarSolanki是的,我两个都做了。您共享的代码都没有访问数据库,因此它还不能引发该错误。请共享。是否启用了firbase登录方法,如电子邮件/密码或匿名in登录前的身份验证部分。我没有共享访问firebase数据库的代码,因为它正在工作,但只有当我将规则更改为public时才共享。当我使用默认规则时,权限被拒绝。@DhavalkumarSolanki是的,我两次都做了。我尝试过删除:sRef.authWithPassword(电子邮件,密码,new firebase.AuthResultHandler()但它仍然不起作用。这是我做的第一件事。我让它起作用了,我所要做的就是更新android studio存储库并添加新的依赖项。谢谢。我尝试过删除:sRef.authWithPassword(email,password,new Firebase.AuthResultHandler()但它仍然不起作用。这是我做的第一件事。我让它起作用了,我所要做的就是更新android studio存储库并添加新的依赖项。谢谢。
{
"rules": {
".read": true,
".write":true
}
}