在使用firestore权限的本机应用程序(通过Expo)中,request.auth始终为null

Ron*_*ici 11 firebase react-native firebase-authentication google-cloud-firestore

这是我的代码:

firebase.auth().onAuthStateChanged((user) => {
    if (user) {
        console.log("We are authenticated now!");
        firebase.firestore().collection("users")
            .doc(firebase.auth().currentUser.uid).set({ name: "new name" });
    } else {
        loginWithFacebook();
    }
});
Run Code Online (Sandbox Code Playgroud)

而且,这是我的许可规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

似乎无论如何,request.auth始终为null.我得到的错误:

Firestore(4.8.0)2017-12-20T04:18:27.321Z [连接]:WebChannel收到错误:{"code":403,"message":"权限丢失或不足.","status":"PERMISSION_DENIED" }

小智 5

当世博会上最新的Firebase JS SDK出现此问题时,我降级为Firebase SDK 4.6.2。

另外,您必须这样做才能使所有功能正常工作:

复制https://gist.githubusercontent.com/mikelehen/444950a35019208f3aaf18d37ab4937c/raw/85ac4cb3108d92163cb8f04fbdddcc88d4081aab/index.js

在你的 node_modules/@firebase/webchannel-wrapper/dist/index.js

否则,您的收藏品将一无所获。

希望这可以帮助。


N.K*_*N.K -1

首先检查 FIREBSAE 规则执行模拟器上的内容,

其次,您的问题听起来像是您的请求未同步,请在网络视图中检查您的规则(如果可能),因为我尝试做同样的事情并且它对我有用

    {
      "rules": {
                ".read": "auth != null",
                ".write": "auth != null"
               }
    }
Run Code Online (Sandbox Code Playgroud)