如何使用手机进行身份验证时修复'user unauthenticated' Firebase 存储问题



刚开始使用Firestore,似乎无法解决我遇到的问题。我正在用手机注册用户,然后提示用户在app中编辑数据,但是我遇到了错误,不知道如何修复。

错误:

I/flutter (7502): [firebase_storage/unauthenticated]用户未认证。验证后再试。

W/Firestore(7502): (23.0.3) [WriteStream]: (b2291d0) Stream closed with status: status {code=NOT_FOUND, description=No document to update:

项目/blahblah/数据库/(默认)/文档/用户/CrxXOi8vajhUYfevbPbMRjAHQqrv5,导致=零}。

E/flutter (7502): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)]

未处理异常:[cloud_firestore/not-found]某些请求的文档未找到。

Authentication工作得很好,因为我在users中看到具有uid的用户。但是,不在Firestore集合"Users"中。我的规则很简单:

rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{id} {
allow read, delete, update, create: if request.auth != null;
}}}

存储规则设置为:

rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}}

编辑配置文件的方法是:

String currentUid() {
return firebaseAuth.currentUser.uid;
}
updateProfile(
{File image,
String username,
String email,
String sex,
String dob,
String phone}) async {
DocumentSnapshot doc = await usersRef.doc(currentUid()).get();
var users = UserModel.fromJson(doc.data());
users.username = username;
users.email = email;
users.phone = phone;
users.dob = dob;
users.sex = sex;
if (image != null) {
users.photoUrl = await uploadImage(profilePic, image);
}
await usersRef.doc(currentUid()).update(
{'username': username, 'photoUrl': users.photoUrl, 'phone': phone,
'dob': dob, 'email': email, 'sex': sex});
return true;
}

帮助非常感谢!

我最终了解到,不建议在开发早期强制执行AppCheck存储访问。不强制AppCheck存储,它工作!从现在开始我会看他们的视频!

您的错误来自Storage,而不是FireStore。到存储区编辑规则。

rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}

我找到了一个解决这个问题的方法。pub获取firebase_app_check: ^0.0.3这个包。然后调用这个app的check类-

await FirebaseAppCheck.instance.activate();

对于我的情况,我这样解决了这个问题。

相关内容

  • 没有找到相关文章