Flutter:firebase_auth 好像不行,怎么授权?
Posted
技术标签:
【中文标题】Flutter:firebase_auth 好像不行,怎么授权?【英文标题】:Flutter: firebase_auth seems not to work, how do I authorize? 【发布时间】:2020-01-23 18:43:26 【问题描述】:我有一个使用 cloud_firestore 包的 Flutter 应用程序,它在 android 和 ios 上运行良好。但是我的数据库是“允许读,写:如果为真”,所以谷歌一直提醒我解决这个不安全问题。这是我做的:
包括 firebase_auth 更改我的 firebase 规则 创建邮件/密码帐户 实现登录过程 将规则更改为“允许写入:如果 request.auth != null;”我想我一切都好。在应用程序中,似乎是这样的:
print("User $(await FirebaseAuth.instance.currentUser()).email)");
这给了我我帐户的邮件。我也有一个 onAuthStageChanged 监听器,我得到了我所期望的。所以我猜登录确实有效。
但是如果我尝试进行数据库访问,例如使用 .setData(),我得到一个错误
W/Firestore(4411): (19.0.0) [Firestore]: 写入失败于...: Statuscode=PERMISSION_DENIED, description=Missing or enough permissions., cause=null
它看起来好像 auth 包没有正确通知 firestore 包。在日志中,我看到了
D/FirebaseAuth(5698):通知 id 令牌侦听器有关用户 (...)。
我希望出现类似“Firestore:收到令牌...”的内容,但这不会出现。
我必须小心初始化顺序吗?我的是
-
_app = 等待 Firebase.App.configure...
_firestore = Firestore(app: _app);
等待 FirebaseAuth.instance.signInWithEmailAndPassword...
我在一些搭载 Android 8 和 9 的三星和 OnePlus 设备上进行了尝试。
有什么提示吗?
【问题讨论】:
您能谈谈您是如何修复 Firestore 访问权限的吗?您是否添加了更多规则以仅允许允许的用户?这些规则可能会拒绝您的请求?您可能想粘贴这些规则以更好地理解问题。 你能发布一些代码吗? 这些是我的 Firebase 规则。为了测试,我在“写入”变体之间切换: service cloud.firestore match /databases/database/documents match /deviceinfos/infos allow read: if true; // 允许写入:如果为真;允许写入:如果 request.auth != null; 匹配 /hardware/hardware 允许读取:如果为真;允许写入:如果为真; // 允许写入:如果 request.auth != null; 【参考方案1】:我让它运行了!使用了来自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
有趣!!
【讨论】:
以上是关于Flutter:firebase_auth 好像不行,怎么授权?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 和 Firebase:任务 ':firebase_auth:compileDebugJavaWithJavac' 执行失败
Flutter 中的 cloud_firestore 和 firebase_auth 兼容性问题
MissingPluginException(在通道 plugins.flutter.io/firebase_auth 上找不到方法 signInWithCredential 的实现)
Flutter 版本解决失败 firebase_auth ^1.4.1 和 http ^0.12.2