Flutter - Flutter上的Firebase实时数据库 - 在用户通过身份验证后拒绝对“auth!= null”的权限

时间:2018-05-31 14:59:51

标签: firebase firebase-realtime-database flutter

在Android上,用户登录后我尝试从Firebase Realtime Db读取一些数据但我收到的是“-3,Permission denied”消息。我的安全规则是

  ".read": "auth != null"

如果我将安全规则更改为

  ".read": "true"

然后我可以阅读我的数据。

在将用户登录后,我可以访问我的FirebaseUser并且它已填充了一个与Firebase身份验证中的uid匹配的uid,因此看起来登录部分是正确的。我登录如下

    final FirebaseAuth _auth = FirebaseAuth.instance;
    final GoogleSignIn _googleSignIn = new GoogleSignIn();

    //do auth
    var googleAccount = await _googleSignIn.signIn();
    var googleAuth = await googleAccount.authentication;
    await _auth.signInWithGoogle(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
);

在等待用户成功登录后,我按以下方式连接到数据库。

var firebaseApp = await FirebaseApp.configure(
  name: 'db2',
  options: const FirebaseOptions(
    googleAppID: GoogleSettings.googleAppID,
    apiKey: GoogleSettings.apiKey,
    databaseURL: GoogleSettings.databaseURL,
  ),
);
var db = new FirebaseDatabase(app: firebaseApp);

//get data
var popsicles = new List<String>();
var popsicleRef = db.reference().child('popcicles');

var result = await popsicleRef.once();

使用的插件(所有最新截至31/5/18)

  • 颤动版本为0.4.4
  • google_sign_in:3.0.2
  • firebase_auth:0.5.10
  • firebase_database:1.0.0
  • firebase_core:0.2.3

编辑 - 添加了一个要点 以下是问题的要点(我在这里阅读数据而不是写作,我的安全规则位于页面顶部)

https://gist.github.com/twistedinferno/7bc7c62239e009e5195ed4576e7099e8

enter image description here

enter image description here

我不确定我哪里出错了?我是否需要将FirebaseApp或FirebaseDatabase与FirebaseUser相关联?

0 个答案:

没有答案