如何只允许管理员App写入Firebase?

时间:2019-12-06 11:54:09

标签: java android firebase firebase-realtime-database

我有两个单独的应用程序,一个应用程序仅适用于只能读取Firebase数据库和存储的普通用户,另一个应用程序用于将数据上传到Firebase。 我已经打开了Firebase规则“ Read,Write = true”。我只需要允许admin / upload应用程序将数据上传到数据库和存储中(如果可以使用一些简单的admin应用程序ID)。

我已经看过的帖子:

how-to-only-allow-one-admin-user-to-write-firebase-database allowing-specific-user-write-access

1 个答案:

答案 0 :(得分:2)

步骤1:,您必须授权某个用户。为此,请转到: 开发->身份验证->添加用户

步骤2:您必须在Firebase中设置规则。

转到数据库->规则,并授予某些用户更改数据库的权限。

下面是用户更改“令牌” 字段的一组规则的示例:

{
"rules": {
"Tokens" : {
"$uid": {
".read": true,
".write": "auth.uid === $uid"
   }
  }
 }
}

JavaScript代码示例:

var email = "XXX@XXX.XXX; //The user that you authenticated in Firebase
var password = XXXXXXXXXXX; //Password of that user
var uidValue = XXXXXXXXX;
const auth = firebase.auth();
//Sign in
const promise = auth.signInWithEmailAndPassword(email, password);
promise.catch(e => console.log(e.message));

//Add a realtime authentication listener
firebase.auth().onAuthStateChanged(firebaseUser => {
    if (firebaseUser) {
        const rootRef = firebase.database().ref();
        const usersRef = rootRef.child('Tokens');
        const uid = uidValue;
        const daveRef = usersRef.child(uid);
        daveRef.set({
            id: 232 //New ID
        });

    }
    else {
        console.log("not logged in");
    }
});
firebase.auth().signOut();

最后,firebase实时数据库具有以下字段:

"Tokens" : {
"[UID value (e.g: 123XXX)]" : {
  "id" : "164"
  }
 }