Pyrebase5访问Firebase实时数据库子集合时出现401权限错误
使用Pyrebase5访问Firebase实时数据库时遇到权限问题,认证代码如下:
_config = {'example': 'ThisConfig'} _firebase = pyrebase.initialize_app(self._config) _auth = _firebase.auth() _user = _auth.sign_in_with_email_and_password('eletroinformaticabrasil.bav.py@mail.com', 'myexample_password') _db = _firebase.database().child('eletroinformaticabrasil') _get = _db.child('AUTH_USER').get(token=_user['idToken'])
初始错误
Errno 401 Client Error: Unauthorized for url: https://dazzrickprogrammer-default-rtdb.firebaseio.com/eletroinformaticabrasil/AUTH_USER.json?auth=token] { "error" : "Permission denied" }
数据库规则、结构及认证API配置均正常,且通过JavaScript CDN调用Firebase API无此问题。
编辑后错误
修改代码后出现新错误:
[db] -> 2023/5/20 - 11:11:52 -> DataSource Get Error :Exception: [Errno 401 Client Error: Unauthorized for url: https://dazzrickprogrammer-default-rtdb.firebaseio.com/AUTH_GROUP.json?auth=token] { "error" : "Permission denied" } Parameters: {|"collection": "AUTH_GROUP"|}
发现请求地址未包含'eletroinformaticabrasil'路径,推测是child()方法调用有误。
问题解决
最终确认两个问题:
- 调用
child()时传入多参数会忽略之前的子节点,需将'eletroinformaticabrasil'作为第一个参数; - 最初问题是忘记传递token参数。
感谢@FrankVanPuffelen提供的jwt.io工具帮助排查。
内容的提问来源于stack exchange,提问作者DazzRick

