Firebase Firestore 使用 Expo (React Native) 缺少或权限不足
Firebase Firestore missing or insufficient permissions using Expo (React Native)
我一直在将 FireStore 用于一个在浏览器中运行良好的项目,但是当我将代码移植到 Expo 时,运行在 iOS 11.2 iPhone X 上运行在模拟器中,它不断提高 Error: Missing or insufficient permissions.
Auth 工作正常,当我在 Firestore collection object 中检查客户端时,设置了适当的 UID,并在浏览器中测试相同的代码,一切正常(没有权限问题)。我想说的是,我 95% 确定问题出在 Firebase lib/react native/expo 组合上,而不是我的代码。特别是因为似乎在浏览器中调用 Firestore,设置了 headers,但是在 Reactotron(来自 Expo)中调试调用时,看起来 Firebase lib 正在进行的调用没有 [=28] =] 完全没有。
我怀疑这有什么不同,但这是我的授权规则:
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;
}
}
}
我试图拨打的电话(文档中肯定有数据)如下:
profile = (await UserDataCollection.doc(`${idToken.uid}`).get()).data();
我很好奇是否还有其他人 运行 遇到过这个问题,如果有,是否有任何解决方法可以使 Firestore 正常工作?
根据之前的评论,降级到 4.6.2 似乎可以解决问题。我不确定确切的根本原因,但发送 auth headers 的行为似乎已经改变(所以可能有什么东西?)。如果我有时间进一步调查,我会更新我的答案。很高兴 Firebase 团队中的一位可以联系我获取我的帐户详细信息,如果他们想在他们这边进行验证的话。
我一直在将 FireStore 用于一个在浏览器中运行良好的项目,但是当我将代码移植到 Expo 时,运行在 iOS 11.2 iPhone X 上运行在模拟器中,它不断提高 Error: Missing or insufficient permissions.
Auth 工作正常,当我在 Firestore collection object 中检查客户端时,设置了适当的 UID,并在浏览器中测试相同的代码,一切正常(没有权限问题)。我想说的是,我 95% 确定问题出在 Firebase lib/react native/expo 组合上,而不是我的代码。特别是因为似乎在浏览器中调用 Firestore,设置了 headers,但是在 Reactotron(来自 Expo)中调试调用时,看起来 Firebase lib 正在进行的调用没有 [=28] =] 完全没有。
我怀疑这有什么不同,但这是我的授权规则:
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;
}
}
}
我试图拨打的电话(文档中肯定有数据)如下:
profile = (await UserDataCollection.doc(`${idToken.uid}`).get()).data();
我很好奇是否还有其他人 运行 遇到过这个问题,如果有,是否有任何解决方法可以使 Firestore 正常工作?
根据之前的评论,降级到 4.6.2 似乎可以解决问题。我不确定确切的根本原因,但发送 auth headers 的行为似乎已经改变(所以可能有什么东西?)。如果我有时间进一步调查,我会更新我的答案。很高兴 Firebase 团队中的一位可以联系我获取我的帐户详细信息,如果他们想在他们这边进行验证的话。