2022年5月6日 星期五

App inventor 2 透過web元件連接firebase(7):透過Realtime Database資料庫進行資料處理(第三種權限設定)

 一、範例二( 透過此設定「經過身份驗證的使用者都只可以讀取但只有自己才可以寫入自己uid下的資料夾內容。」)

(一)權限設定的方法如下:以下權限設在專案下 user/$uid/password_activity的資料夾中

(1)".read": "auth.uid != null", 只要localID不為空就可以read

(2) ".write": "$uid === auth.uid",此行是說$uid此資料夾名稱與登入者的localID相同才能寫入

{ "rules": { ".read": "false", ".write": "false", "user": { "$uid": { "password_activity":{ ".read": "auth.uid != null", ".write": "$uid === auth.uid", }, } } } }

(二)App Inventor 2方法

1.拉出web元件
(1)web元件連接的網址如下:
https://<DATABASE_NAME>.firebaseio.com/user/$uid/password_activity/.json

[PROJECT_ID]是你專案的編號

user/$uid/password_activity/.json 是你讀取資料的位置,你權限設能讀取那裡就寫那裡。

說明一:ID_TOKEN為登入給予的令牌,在你登入firebase後,會回傳給予你這個值。
跟之前完全不用權限的方法不同,就只有多了要給予下面的參數值,若沒有給予這個<ID_TOKEN>,它會告知你沒有足夠的權限存取。
說明二:這跟前面那個傳值的方法是完全相同的,但因為你在firebase裡權限只限可以讀取的範圍在
https://<DATABASE_NAME>.firebaseio.com/user/$uid/password_activity中,因此你若想寫入其它的資料夾,它不會讓你寫入。因此你要確定你的路徑是正確的。

大致的作法如下,這次先從建立資料開始,建立一個user下資料夾跟系統每次給你的uid(localId)相同名字的。在登入的時候,系統的回傳值,除了Idtoken外,還會有localID,而這個localld就是上面的$uid。因此你在登入後,需將Idtoken和 localld先存在清單中,以便以後可以再繼續使用。像下面這個圖。

(1)post

(2)put



   (3)get

(4)patch

(5)del



參考資料:

沒有留言:

張貼留言