使用动态链接接受邀请

时间:2017-03-17 09:25:21

标签: firebase firebase-realtime-database firebase-security firebase-dynamic-links

在我讨论这个问题之前,我想向您提供一些背景知识。目前我有用户和会话。用户是您在考虑用户时通常会想到的,但会话可以被视为会议。这些会议可以标记为私有,在这种情况下,我有Firebase数据库安全规则,阻止用户读取和写入会议,除非他们是会议的一部分。在应用邀请中是获得邀请的唯一方式(来自组织者)

直到现在,问题出在这里:我想使用动态链接通过直接链接到会话来邀请用户加入会话,但我不知道如何在数据库安全规则中对此进行建模。

有没有人知道我会怎么说:“从动态链接邀请来到这里的任何人都有权邀请他们参加会议”?在这种情况下,我想问题是我不知道用户会邀请谁。

1 个答案:

答案 0 :(得分:0)

看起来我使用之前的评论解决了自己的问题。我决定生成一个新的按键并使用动态链接分发密钥。

数据库中的内容是什么?
我在firebase中创建了一个路径来保存会话的随机密钥:

dynamicInvites/sessions/{sessionId}
"somerandomkey"

以及将密钥分发给用户的路径

dynamicInvites/users/{userId}
{
  "somerandomkey": {timestamp}
}

此外,还有一些安全规则表明会话X和会话X的随机密钥无法读取,除非用户A具有会话X的随机推送密钥或者他们是会话的成员。

您是如何分发密钥的?
由于会话的用户可以访问随机密钥,因此可以使用随机密钥和sessionId生成动态链接作为查询字符串。

当用户点击链接时,他们会被重定向到应用程序,该应用程序从链接中提取随机密钥和会话ID,并将随机密钥放在其dynamicinvites用户路径下以及当前时间,然后使用会话ID打开会话。如果我想对这些键执行某种类型的定期清理,则使用当前时间。

为什么要使用单独的推送键而不是会话中的推送键?
会话的推送键位于数据库的多个位置,不会被视为私有,因为它可能会加载到客户端。

在应用启动时执行数据库更新不是用户友好的
当用户点击链接时,我使用启动画面屏蔽了这次。由于我在正常启动时有一个启动画面,这是用户期望的正常行为。

相关问题