当前位置: 首页 > 知识库问答 >
问题:

对Firebase实时数据库的权限被拒绝

夏知
2023-03-14

我正试图按照Firebase的在线指南使用Firebase实时数据库,但由于我的许可被拒绝,我无法获得数据库的任何更新。我不确定我做错了什么。我甚至设定了阅读和写作的规则。

onClickListener内的代码如下:

Button vDetails = (Button) v.findViewById(R.id.enter_vechile_details);
vDetails.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        DatabaseReference myRef = FirebaseDatabase.getInstance().getReference();
        myRef.child("Customers").child("Drivers").setValue("Name").addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.d(TAG, "signUp: set customer name" + e);
                e.printStackTrace();
            }
        });
        getFragmentManager().beginTransaction().replace(R.id.fragment_container, new SignUpCustomerFragment()).commit();
    }
});

这是在片段中,按钮在开始片段替换事务之前首先完成这些语句。

以下是Firebase中的规则:

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

由于我不熟悉JSON,我也尝试过在“.write”结尾加逗号

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

这是stacktrace:

09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err: com.google.firebase.database.DatabaseException: Firebase Database error: Permission denied
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at com.google.firebase.database.DatabaseError.toException(Unknown Source)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at com.google.android.gms.internal.zzall$1.onComplete(Unknown Source)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at com.google.android.gms.internal.zzahq$20.run(Unknown Source)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at android.os.Looper.loop(Looper.java:168)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5885)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection
09-10 04:32:46.274 16594-16594/com.buildingstories.sabbib.xpose W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
09-10 04:32:46.276 16594-16594/com.buildingstories.sabbib.xpose W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection

我一整天都在做这个,自从我遵循Firebase指南后,我不知道出了什么问题。

共有3个答案

强阳曜
2023-03-14

您已在child中为更新值设置了主题

不设置构造函数中的传递值。

Customer customer = new Customer(fullName.getText().toString()); // Pass values here in constructor
//customer.setFirstName(fullName.getText().toString());

myRef.child("Drivers").setValue(customer);
穆高澹
2023-03-14

您应该使用HashMap将您的值推送为,并添加一个onFailureListener,以便查看您得到的error

 FirebaseDatabase database = FirebaseDatabase.getInstance();
       DatabaseReference myRef = database.getReference("Drivers");

       Customer customer = new Customer();
       customer.setFirstName(fullName.getText().toString());//fullName is EditText

       Map<String,Object> map = new HashMap<String,Object>();
       map.add("drive",customer);

       myRef.push().setValue(map).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            e.printStackTrace();
        }
    });

注意:请确保Client类具有空构造函数,否则Firebase将无法将类序列化。

濮彬
2023-03-14

您需要为“drive”创建一个子类,并按以下代码推送Customer类,记住在Customer类中创建空构造函数:

       FirebaseDatabase database = FirebaseDatabase.getInstance();
       DatabaseReference myRef = database.getReference("Drivers");

       Customer customer = new Customer();
       customer.setFirstName(fullName.getText().toString());//fullName is EditText

       myRef.child("drive").push().setValue(customer);
 类似资料:
  • 我在Kotlin构建了一个应用程序,在节点中有一个后端。js。我允许用户在客户端应用程序上使用Firebase身份验证登录/注册。 该应用程序的部分功能是让用户通过Firebase的实时数据库在线保存数据。应用程序内部发生的事情是,一旦用户登录,我就会将他/她的uid传递到后端,后端会向数据库发出请求。 当数据库的规则是允许每个人读/写时,一切都正常工作。一旦我把它们改成这样: } 我一直被拒绝许

  • 问题内容: 我对编码比较陌生,遇到了麻烦。 我有这段代码可以将数据发送到Firebase 但是,我不断收到错误: FIREBASE警告:设置为/ users /(GoogleID)失败:Permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(…) 当我尝试查找时,它谈论的是

  • Firebase规则包括: 代码 它会导致一个错误: [错误:flatter/lib/ui/ui_dart_state.cc(166)]未处理的异常:PlatformException(-3,权限被拒绝,)E/flatter(31408):#0 StandardMethodCodec。解码信封(包:flatter/src/services/message_编解码器。dart:569:7)E/fla

  • 与firebase_ auth和firebase_。使用电子邮件和密码进行身份验证。这是用于身份验证和处理身份验证更改事件的代码提取。验证成功后,代码将用户信息插入实时数据库。如果数据库规则设置为读/写真,则一切正常。但是,使用标准数据库写入规则(auth!=null),应用程序抛出DatabaseError:权限被拒绝。数据库插件似乎不知道经过身份验证的身份?你知道怎么回事吗? 然后: 我已经写

  • 我一直在尝试使用数据库规则和通过CLI托管来创建一个基本上是公共的数据库,但有一些限制。如果我根据规则声明数据库已打开,我可以访问该数据库,但如果我从顶层删除读/写操作并尝试仅访问一个子“规则”,我会遇到权限错误: [2018-10-04T16:13:56.926Z]@firebase/database:firebase警告:设置为/2019/statistics/topTens/Strider

  • 我添加了使用权限,包括WRITE_EXTERNAL_STORAGE,android.permission.相机,READ_EXTERNAL_STORAGEAndroidManifest.xml. 当我在Nexus6(API 24)中运行我的应用程序时,它向我抛出了以下错误: java.io.IOException:权限被拒绝 这是我的代码: 如何在权限相机运行时打开之前使用它?