2017-01-23 52 views
1

我正在开发平台Raspberry PI 3,Openelec OS上的聊天项目。如何防止Firebase上的匿名键?

试图写入数据库并获取不需要的匿名密钥。

Firebase real-time DB

不需要钥匙标有黄色。 Movie2它的键和值是想要的结果,但我手动完成。

我只问我该如何防止这个匿名随机密钥在那里,我怎样才能用其他密钥替换它? (字符串,例如电影名称)

这是我的代码:

url = 'https://chat-example-97c62.firebaseio.com/Movie1.json' 
postdata = { 
    'date': str(time.asctime(time.localtime(time.time()))), 
    'temp': str("Hello from Kodi") 
} 
req = urllib2.Request(url) 
req.add_header('Content-Type','application/json') 
data = json.dumps(postdata) 

感谢。

+0

为确保数据符合您所需的模式,您可以在数据库的安全规则中编写'.validate'子句。有关更多信息,请参阅:https://firebase.google.com/docs/database/security/ –

+0

@FrankvanPuffelen确定这是验证。但是,如何在不使用匿名密钥的情况下写入数据库?例如,对于图片中的关键Movie1,我只想要关键字日期,用户名和它们的值。没有KbBDD4QDDiZn3it6r8m –

回答

0

当您发送POST请求火力地堡,它会自动生成一个密钥(匿名密钥),如果你想使用自己的密钥,您需要使用补丁请求,这是Python的3个例子:

def update_entry(user, message): 

    my_data = dict() 
    my_data["user"] = user 
    my_data["message"] = message 

    json_data = json.dumps(my_data).encode() 
    request = urllib.requests.Request("https://<YOUR-PROJECT-ID>.firebaseio.com/movies/<REPLACE_THIS_WITH_YOUR_DESIRED_KEY>.json", data=json_data, method="PATCH") 

    try: 
     loader = urllib.request.urlopen(request) 
    except urllib.error.URLError as e: 
     message = json.loads(e.read()) 
     print(message["error"]) 
    else: 
     print(loader.read())