在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)
编辑 - 添加了一个要点 以下是问题的要点(我在这里阅读数据而不是写作,我的安全规则位于页面顶部)
https://gist.github.com/twistedinferno/7bc7c62239e009e5195ed4576e7099e8
我不确定我哪里出错了?我是否需要将FirebaseApp或FirebaseDatabase与FirebaseUser相关联?