如何根据他的邮件或其他ID在实时数据库中获取其他用户Firebase ID?

时间:2019-07-12 08:22:34

标签: android firebase firebase-realtime-database

我正在编写一个Android应用程序,其中将一些对象(交易,类别等)组合到一个项目中,这些项目可以在用户受邀请之间共享。例如。用户A创建一个项目-只有他有权访问该项目,直到与用户B共享该项目-然后他们两个都应该有权访问该项目。我正在使用firebase实时数据库项目来实现这一目标。 这是数据库结构的一部分:

"transactions": {
  "project1": {
    "SDGSG%$4gs" : {
      "transacationMonth": 7,
      "transactionAmount": 400.67,
      ...
    }
  },
  "project2": {
    ...
  }
},
"categories": {
  "project1": {
    "grtge5g4e5ge45g": {
      "categoryName" : "cat1",
      ...
    }
  },
  "project2" : {
    ...
  }
}

,在该结构中,我有一个节点“ access”,它决定哪个用户可以访问哪个项目:

"access": {
  "project1": {
    "uid1": true
  },
  "project2": {
    "uid7": true
  }
}

现在,假设我的应用程序用户(firebase用户ID = uid1)希望与其他firebase用户(firebase用户ID = uid2)共享他的项目(“ project1”)。 从结构的角度来看,让应用程序添加以下条目就足够了:

"access": {
  "project1": {
    "uid1": true,
    "uid2": true,
  },
...

但是从我的Android应用程序代码角度来看,我不知道uid2。例如,我可能知道带有uid2的用户正在使用的邮件,但我不知道如何仅基于电子邮件(或其他一些属性,如用户名或其他)来访问uid2。

那么...我该怎么做?

1 个答案:

答案 0 :(得分:0)

首先使用以下代码获取唯一的用户ID:

FirebaseUser user = firebaseAuth.getCurrentUser();
    if (user != null) {
        Log.d(TAG,user.getUid());
    } 
  

对于数据库中的每个项目,必须有unique-projectID,并且在其中   存储您想要访问该项目的用户ID。

 "access": {
         "unique_projectID": {
         "uid1": true,
         "uid2": true,
         }
     }

让我们举个例子:假设有两个用户A和B。现在,用户A创建一个项目,而该项目仅包含用户A的ID。现在,用户A与用户B共享项目,因此项目B中包含了B'Id。