2017-01-23 61 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())