【发布时间】:2020-07-30 00:57:30
【问题描述】:
我设法制作了一个用户可以使用的身份验证功能:
- 注册
- 登录
- 更新/删除帐号
- 退出
在我退出之前一切正常。我将onSnapshot() 用于更新功能
因此,每次身份验证状态发生变化时,我都会将返回的数据设置为组件的状态。
firebase_auth.auth().onAuthStateChanged(user => {
if(user) {
firebase.collection('users').doc(user.uid).onSnapshot(doc => {
doc.exists && this.setState(prevState => ({ ...prevState, user_data: doc.data() }));
});
} else this.setState(prevState => ({ ...prevState, user_data: null }));
});
signOut() {
firebase.auth().signOut();
}
当我退出时出现以下错误:
onSnapshot 中未捕获的错误:FirebaseError:缺少权限或权限不足。
这是我的数据库规则。我用firebase cloud storage。
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow read, write: if request.auth.uid == uid
}
}
}
如果我停止onSnapshot listener,即使log in 也不起作用。
firebase_auth.auth().onAuthStateChanged(user => {
if(user) {
const unsubscribe = firebase.collection('users').doc(user.uid).onSnapshot(doc => {
doc.exists && this.setState(prevState => ({ ...prevState, user_data: doc.data() }));
});
unsubscribe();
} else this.setState(prevState => ({ ...prevState, user_data: null }));
});
【问题讨论】:
标签: javascript reactjs firebase firebase-realtime-database firebase-authentication