0

我设法注册了一个用户,并在他们注册了所有相同的请求后不久就正确地登录了他们。同样在我的请求中,我尝试使用 python 包 Pyrebase 将用户信息存储在 Firebase 数据库中。

我已经正确初始化了我的 firebase 应用程序以及我的烧瓶应用程序中的 firebase 数据库

config = {
    "apiKey": "apikey",
    "authDomain": "proj.firebaseapp.com",
    "databaseURL": "https://proj.firebaseio.com",
    "storageBucket": "proj.appspot.com",
    "messagingSenderId": "930158028418",
    "serviceAccount.json": "path/to/theServiceAccountStuff.json"
}

app = Flask(__name__)
firebase = pyrebase.initialize_app(config)
auth = firebase.auth()
firedb = firebase.database()

我正在创建这本词典

userInfo = {"email": email, "password": password, "stripeID": customer.id, "subscriptionID": subID,"subscription": "active", "startdate": "Today bro"}

并将它传递到我的 set 函数中,该函数应该(或者至少我认为它确实如此)将我的 JSON 对象保存到 Firebase 数据库中。

firedb.child("users").child(user['localId']).set(data=userInfo)

我正在尝试将用户存储在“用户”下,然后使用自定义键将它们全部分类为他们的 localId。

出于某种原因,我每次都点击上面的代码行,我收到一条错误消息

requests.exceptions.HTTPError: [Errno 401 Client Error: Unauthorized for url: https://myproj.firebaseio.com/users/someid.json] {
  "error" : "Permission denied"
}

这些是我在 firebase 中的数据库规则

在此处输入图像描述

有什么我想念的吗?我什至更进一步删除了所有规则,以便任何人都可以访问它,并且我还输入了虚拟数据以查看它是否有效。虚拟数据是可能的,因为我手动输入了所有信息。

4

2 回答 2

2

您正在尝试使用 Pyrebase 写入 Firebase 实时数据库,但您的项目数据库已配置为使用 Cloud Firestore。

这些数据库不一样。

如果您在托管服务上使用 Python,请考虑切换到Firebase Admin SDK for Python。当您使用服务帐户时,这将是可行的方法。这也将允许您在使用 Cloud Firestore 和实时数据库之间做出选择。

如果您在客户端设备上使用 Python,即使它是本地 Web 服务器,出于安全原因,您也不应该使用服务帐户,而是选择客户端身份验证。如果您希望使用Pyrebase,在撰写本文时,您需要使用屏幕截图中“数据库”一词旁边的下拉菜单切换项目的数据库以使用实时数据库。这是因为 Cloud Firestore 目前没有Pyrebase 用作其后端的REST API 。有关详细信息,请参阅Firebase 实时数据库文档

于 2019-03-17T05:21:21.340 回答
1

对我来说,这有效:

Firebase Console -> Realtime Database -> Rules

编辑规则:

{
  "rules": {
    ".read": "true", 
    ".write": "true",
  }
}
于 2020-11-25T16:16:01.993 回答