使用动态链接接受邀请

Posted

技术标签:

【中文标题】使用动态链接接受邀请【英文标题】:Using Dynamic Links to Accept Invites 【发布时间】:2017-03-17 09:25:21 【问题描述】:

在讨论我遇到的问题之前,我想为您提供一些背景信息。目前我有用户和会话。当您想到用户时,通常会想到用户,但是可以将会话视为会议。这些会议可以标记为私人,在这种情况下,我有 Firebase 数据库安全规则,以防止用户阅读和写入会议,除非他们是会议的一部分。应用内邀请是获得邀请的唯一途径(来自组织者)

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

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

【问题讨论】:

目前针对此问题提出的解决方案是生成一个随机推送密钥,我将其存储在会话中,并将其作为查询参数嵌入到动态链接中。当用户单击应用程序打开的链接时,它将继续提取随机密钥并将其推送到数据库中的前缀中(例如 linkInvites/userId/pushKey)。 firebase 规则将检查此密钥以确定用户是否应该有权访问会话。如果可行,我会将其作为答案发布。 【参考方案1】:

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

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

dynamicInvites/sessions/sessionId
"somerandomkey"

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

dynamicInvites/users/userId

  "somerandomkey": timestamp

此外,还有一些安全规则规定会话 X 和会话 X 的随机密钥不能被读取,除非用户 A 拥有会话 X 的随机推送密钥或者他们是会话的成员。

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

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

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

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

【讨论】:

以上是关于使用动态链接接受邀请的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 动态链接可以用于通用应用邀请和特定页面邀请以跟踪推荐吗?

如何通过 Firebase 邀请通过动态链接发送用户信息

Flutter - 如何在应用邀请功能的 Firebase 动态链接中传递自定义参数?

Firebase邀请Beta App(Google Play商店测试版和iOS Testflight)

golang 有没有 SDK 可以动态生成分支链接? [关闭]

有没有办法在浏览器中打开动态链接?