Firebase Firestore使用Expo(React Native)丢失或权限不足

rap*_*ltm 9 ios firebase-security react-native expo google-cloud-firestore

我一直在使用FireStore来实现在浏览器中运行良好的项目,但是当我将代码移植到Expo,在模拟器中运行iOS 11.2 iPhone X时,它一直在提升 Error: Missing or insufficient permissions.

Auth工作正常,当我在Firestore集合对象中检查客户端时,设置了相应的UID,并在浏览器中测试相同的代码,一切正常(没有权限问题).我想说的是,我95%确定问题出在Firebase lib/react native/expo组合上,而不是我的代码.特别是因为它似乎在浏览器中调用Firestore,所以有标题设置,但是当在Reactotron(来自Expo)中调试调用时,看起来Firebase lib正在进行的调用根本没有标题.

我怀疑它有所不同,但这是我的身份验证规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /UserData/{userID} {
      allow read, write: if request.auth.uid == userID;
    }
    match /MemberData/{userID} {
      allow read: if request.auth.uid == userID;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图进行的调用(并且文档中肯定存在数据)如下:

profile = (await UserDataCollection.doc(`${idToken.uid}`).get()).data();
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有其他人遇到过这个问题,如果有的话,有什么办法让Firestore工作吗?

Jam*_*esR 8

根据之前的评论,降级到4.6.2似乎解决了这个问题.我不确定确切的根本原因,但是auth标头的发送方式似乎已经发生了变化(因此有可能出现问题吗?).如果我有时间进一步调查,我会更新我的答案.如果Firebase团队想要验证他们的帐户详细信息,请与我联系.