gpt4 book ai didi

ios - Firebase ios 无法获取时间戳 [Firebase/Database][I-RDB038012] Listener at/serverTimestamp 失败 : permission_denied

转载 作者:行者123 更新时间:2023-11-30 11:02:09 25 4
gpt4 key购买 nike

我正在使用此代码

var currentTimeStamp: TimeInterval?

let ref = Database.database().reference().child("serverTimestamp")

ref.setValue(ServerValue.timestamp())

ref.observe(.value, with: { snap in

if let t = snap.value as? Timestamp {
// print(t/1000)
// currentTimeStamp = t/1000

//Add additional data(Timestamp) to list
mutableData["timestamp"] = currentTimeStamp

//FINALLY , set data
newdoc.setData(mutableData) { (error) in
completion(docID)
}
}
})

出现此错误

Firebase/Database][I-RDB038012] Listener at /serverTimestamp failed: permission_denied

我的规则设置为 Auth ,但 auth 用户仍然无法获取时间戳

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}

我想在 Firebase 实时数据库当前结构中写入时间戳。

我的项目[空] |____ 服务器时间戳:1

虽然我已经设置了完成公开的规则,但仍然无法获取时间戳

最佳答案

您的规则是为用户节点设置的。您还需要为“serverTimestamp”节点指定规则。

    {
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
},
"serverTimestamp": {
".read": "auth_uid != null",
".write": "auth_uid != null"
}
}
}

这是如果您保持结构相同的话。

当您在 Firebase 中指定规则时,它们使用的术语是原子的,您需要为每个节点指定规则,并且每个子节点在应用自己的规则之前应用父节点的规则。您的规则仅适用于“$uid”节点,您没有为“serverTimestamp”指定任何规则,并且由于“serverTimestamp”不属于“$uid”权限,因此权限被拒绝。

例如,使用您当前的权限,如果您尝试读/写“用户”节点,您也会收到权限被拒绝的消息。您只能访问“users/($uid)/”

关于ios - Firebase ios 无法获取时间戳 [Firebase/Database][I-RDB038012] Listener at/serverTimestamp 失败 : permission_denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53219510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com