Android Studio和Firebase中的权限被拒绝错误[重复]

Posted

技术标签:

【中文标题】Android Studio和Firebase中的权限被拒绝错误[重复]【英文标题】:Permission Denied Error in Android Studio & Firebase [duplicate] 【发布时间】:2019-03-07 14:22:59 【问题描述】:

我是 android 的初学者,遇到了“Firebase 权限被拒绝错误”的问题。以下是我的代码 sn-p:

private void searchUser() 
        Log.d(Constants.TAG, "GetUser:  userId " + mFirebaseUser.getUid()+"   mFirebaseUser.getPhoneNumber()  " +mFirebaseUser.getPhoneNumber());

        if (!TextUtils.isEmpty(mFirebaseUser.getUid())) 
            showSnackBar(getString(R.string.fetching_profile_details), false);
            Utils.showProgressDialog(mActivity, false);

            final FirebaseDatabase database = FirebaseDatabase.getInstance();
            DatabaseReference userRef = database.getReference(Constants.FIREBASE_USERS);
            Query query = userRef.orderByChild(Constants.FIREBASE_USER_PHONE)
                    .equalTo(mFirebaseUser.getPhoneNumber())
                    .limitToFirst(1);

           query.addListenerForSingleValueEvent(new ValueEventListener() 
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) 
                    Utils.hideProgressDialog();
                    if (dataSnapshot != null && dataSnapshot.exists() && dataSnapshot.getChildrenCount() > 0) 
                        //Found user with same number
                        //Log.d(Constants.TAG,"dataSnapshot  " +dataSnapshot);

                        for(DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) 
                            //Log.d(Constants.TAG, "childDataSnapshot  " + childDataSnapshot);
                            mUser = childDataSnapshot.getValue(com.hypertrack.wintry_consumer.models.User.class);
                        

                        if (mUser != null) 
                            isNewUser = true;
                            preFillData();
                        
                    
                

                @Override
               public void onCancelled(DatabaseError databaseError) 
                    Utils.hideProgressDialog();
                    Log.e(Constants.TAG, "onCancelled", databaseError.toException());
                    showSnackBar("Firebase Error finding User details: " + databaseError.getMessage());
                
            );
         else 
            showSnackBar("No firebase user available ");
        
    

以下是我的云存储规则:-

service cloud.firestore 
  match /databases/database/documents 
    match /document=** 
      allow read, write;
    
  

我收到以下错误:

“Firebase 数据库错误:权限被拒绝”

Android Studio Screenshot

请帮忙解决一下。

【问题讨论】:

【参考方案1】:

您向我们展示了如何从 Firebase 实时数据库中查询数据,但您添加了来自 Cloud Firestore 的安全规则。为了能够查询 Firebase 实时数据库,您还应该相应地更改特定部分中的规则。如果您在 Cloud Firestore 中设置了正确的规则,并不意味着它也适用于 Firebase 实时数据库。有两种不同的产品,具有不同的规则。

要解决这个问题,请打开您的 Firebase 控制台,选择您的项目,点击左侧的数据库部分并选择 实时数据库,然后转到 规则选项卡并确保您拥有以下权限:


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

请务必访问有关 security rules 的官方文档。

【讨论】:

成功了。非常感谢,先生。

以上是关于Android Studio和Firebase中的权限被拒绝错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 Android Studio 中的片段将数据写入 Firebase

关于使用android studio在firebase实时数据库中的uid下创建随机密钥

读取 longlat 数据实时 Firebase 和实现以映射 Android Studio

使用 Android Studio 从 Firebase 中的某个位置检索数据

具有实时 Firebase 商店的应用程序中的 Android Studio 错误

Firebase Android Studio 中的无效文档参考