Flutter:firebase_auth似乎不起作用,我该如何授权?

时间:2019-09-23 16:41:29

标签: firebase flutter firebase-authentication

我有一个使用cloud_firestore软件包的Flutter应用程序,它在Android和iOS上运行良好。但是我的数据库是“允许读,写:如果为true”,因此Google不断提醒我解决此不安全问题。我做到了:

  • 包括firebase_auth
  • 更改我在Firebase上的规则
  • 创建一个邮件/密码帐户
  • 执行登录过程
  • 将规则更改为“允许写:if request.auth!= null;”

我认为我一切都很好。在应用程序中,似乎是这样:

print("User ${(await FirebaseAuth.instance.currentUser()).email})");

这给了我我帐户的邮件。我也有一个onAuthStageChanged侦听器,我得到了我所期望的。所以我想登录确实有效。

但是如果我尝试进行数据库访问,例如使用.setData()时,出现错误

W / Firestore(4411):(19.0.0)[Firestore]:写失败于...:状态{code = PERMISSION_DENIED,描述=权限不足或权限不足,原因=空}

它在找我,好像auth软件包没有正确通知firestore软件包。在日志中,我看到了

D / FirebaseAuth(5698):向id令牌侦听器通知有关用户(...)。

我希望出现类似“ Firestore:已收到令牌...”的消息,但这不会出现。

我必须注意初始化顺序吗?我的是

  1. _app =等待Firebase.App.configure ...
  2. _firestore = Firestore(app:_app);
  3. 等待FirebaseAuth.instance.signInWithEmailAndPassword ...

我在装有Android 8和9的某些三星和OnePlus设备上尝试过。

有人暗示某人吗?

1 个答案:

答案 0 :(得分:0)

我让它开始运行!!使用了Flutter & Firebase - using firebase_storage along with firebase_auth

的提示

访问数据库时,我使用了指向

所创建的Firestore的指针
static Firestore _firestore;
...
_firestore = Firestore(app: ...);

后来我用

await _firestore.collection(...)...setData(...);

但是,登录后,Firestore似乎已更改。当我写的时候有效:

await Firestore.instance.collection...setData

有趣!!