这是我的代码:
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();
}
});
,这是我的权限规则:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null;
}
}
}
似乎无论如何,请求。我遇到的错误:
firestore(4.8.0)2017-12-20T04:18:27.321Z [连接]:webChannel 收到的错误:{"代码":403,"消息":"缺失或不足 权限。","状态":" climermission_denied"}
我降级到firebase SDK 4.6.2当我在Expo上遇到此问题时。
另外,您必须这样做才能使一切正常工作:
在您的node_modules/@firebase/webchannel-wrapper/dist/index.js
没有这个,您将从收藏中获得什么。
希望这会有所帮助。
i从浏览器与博览会中运行的相同代码分散了请求。我注意到的一个区别是缺少原始标题。我修补了XHR,它用于我的用途。我不确定这是错误还是预期的行为。我在Slack/Firestore和Discord/React-Native上问过,但没有得到太多输入。
const xhrInterceptor = require('react-native/Libraries/Network/XHRInterceptor')
xhrInterceptor.setSendCallback((data, xhr) => {
if (xhr._method === 'POST') {
// WHATWG specifies opaque origin as anything other than a uri tuple. It serializes to the string 'null'.
// https://html.spec.whatwg.org/multipage/origin.html
xhr.setRequestHeader('Origin', 'null')
}
})
xhrInterceptor.enableInterception()
似乎是一个错误 - 就像其他高音用户所经历的那样。找到修复程序时,我会更新。如果有人让它起作用(通过EXPO进行反应),请分享。
对不起,我迟到了聚会,但是我遇到了这个,以为我会分享我的经验。我遇到了完全相同的问题,经过数月的研究和调试,当我升级到Firebase V 5时,它可以解决。这是指向我的SO帖子和解决方案的链接。希望能帮助到你:https://stackoverflow.com/a/51115385/6158840
我通过将firebase版本降低到5.0.0(我使用的6.4版)来解决该问题。希望它可以帮助他人。
- 在您的软件包中
dependencies: {
"firebase": "^5.0.0"
}
- 更新依赖项
npm install
首先检查Firebsae规则Exectuion Simulator上的东西,
,其次,您的问题听起来像您的请求不同步,在Web视图中检查您的规则(如果可能的话),因为我尝试执行相同的操作,并且对我有用
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
请记录您的UID并确认它不是空的。然后将权限规则修改为 -
// Grants a user access to a document matching their Auth user Id
service cloud.firestore {
match /databases/{database}/documents {
// Collection named "users", document named after the userId
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
}
}