【发布时间】:2021-11-02 13:05:26
【问题描述】:
我被困在将经过身份验证的用户添加到 firestore 'users' 集合中。
Unhandled Exception: [cloud_firestore/not-found] Some requested document
was not found.
用户通过 Google 登录:
class GoogleSignInProvider extends ChangeNotifier {
final GoogleSignIn _googleSignIn = GoogleSignIn();
GoogleSignInAccount _user;
GoogleSignInAccount get user => _user;
AuthService auth = AuthService();
Future googleSignIn(BuildContext context) async {
try {
final googleUser = await _googleSignIn.signIn();
if (googleUser == null) return;
_user = googleUser;
final googleAuth = await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.credential(
idToken: googleAuth.idToken, accessToken: googleAuth.accessToken);
await FirebaseAuth.instance.signInWithCredential(credential);
} catch (e) {
print(e.toString());
}
final User currentUser = FirebaseAuth.instance.currentUser;
if (currentUser != null)
usersRef.add(currentUser.uid);
Navigator.of(context).pushReplacement(
CupertinoPageRoute(builder: (_) => TabScreen()));
notifyListeners();
}
但是,无论我如何以及如何尝试身份验证,firebase id 都不会添加到 usersRef(firestore 集合)中。我该如何解决?
我的 Firestore 规则是:
match /users/{userId}/{documents=**} {
allow read: if request.auth.uid != null;
allow write, update, create, delete: if isOwner(userId);
}
function isOwner(userId) {
return request.auth.uid == userId;
}
帮助非常感谢!
【问题讨论】:
-
你能展示你从firestore和dart firestore代码的实际响应吗?
-
嗨,@Mariano,应用程序登录,但是当我需要编辑配置文件时,firestore 给出了上述错误:没有要更新的文档。这是 bcoz 身份验证的用户不在 firestore 集合中。
-
那么,你的问题是什么?您是否正在尝试创建一个 Firebase 集合?您无法修改尚未创建的内容。 Firebase auth 只能修改 Firebase auth 记录,仅此而已。如果你不显示 usersRef 有什么,我们就无法知道发生了什么。
-
aan,我明白了。我确实有 Firestore 收藏。我需要将经过身份验证的用户添加到它。
标签: flutter google-cloud-firestore firebase-authentication