Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用firebase实现协作者邀请?_Firebase_Angularfire_Firebase Security - Fatal编程技术网

如何使用firebase实现协作者邀请?

如何使用firebase实现协作者邀请?,firebase,angularfire,firebase-security,Firebase,Angularfire,Firebase Security,我正在开发一个带有firebase、angularfire和angularfire的应用程序。我想实施一个 “邀请合作方”功能与firebase本身实现协作的方式基本相同——即,应用程序用户可以输入电子邮件地址来邀请合作方,这将发送电子邮件并生成“inviteToken”,就像在firebase中邀请合作方一样。 我理解安全规则(限制合作者访问)和模式设计(a/collaborators‘folder’?)是一个方面,可以使用本机firebase和angular来完成。我的问题是如何最好地实现邀

我正在开发一个带有firebase、angularfire和angularfire的应用程序。我想实施一个 “邀请合作方”功能与firebase本身实现协作的方式基本相同——即,应用程序用户可以输入电子邮件地址来邀请合作方,这将发送电子邮件并生成“inviteToken”,就像在firebase中邀请合作方一样。
我理解安全规则(限制合作者访问)和模式设计(a/collaborators‘folder’?)是一个方面,可以使用本机firebase和angular来完成。我的问题是如何最好地实现邀请电子邮件和“邀请令牌”?实现这种邀请功能最方便的方法是什么?可以使用本机firebase完成吗?或者需要实现单独的服务器端代码(nodejs?)?也许firebase团队中的某个人可以根据firebase本身如何实现协作发表意见

您可以通过散列要与之共享特定数据段的用户的电子邮件地址,并将其存储在权限字段下,来实现协作

例如,让我们从“user1”拥有的路径/items/item1开始:

{
  "items": {
    "item1": {
      "data": "foobar",
      "permissions": {
        "user1": true
      }
    }
  }
}
您可以按如下方式设置数据的安全规则:

{
  "rules": {
    "items": {
      "$item": {
        ".read": "data.child('permissions').hasChild(auth.uid)",
        ".write": "data.child('permissions').hasChild(auth.uid)" 
      }
    }
  }
}
现在,当“user1”想要与“user2”共享“item1”时,他们只需写入值“user2”,并在permissions键下将其设置为true。您可以将“permissions”键的结构扩展为您想要的粒度(例如:协作者只能读取,但所有者可以读取和写入,等等)


例如,在实践中,您可能希望使用用户电子邮件地址的哈希。另外,请看一下简单登录,以获得对用户进行身份验证的简便方法(一旦进行了身份验证,上述安全规则中使用的
auth
变量将自动为您设置)。

感谢您的回答,但是,据我所知,给出的示例似乎不起作用,因为auth.id不等于哈希电子邮件(user1实际上是电子邮件哈希值)。我们如何在安全规则中访问登录用户的电子邮件哈希?我使用的是firebase simple login,而auth对象似乎没有电子邮件属性。是否有未记录的auth属性可用于此目的?请澄清。您最终是如何进行的?您是否解决了问题?