【问题标题】:Firebase invites deprecated. Set up a user invitation system with vue.js and firebase?Firebase 邀请已弃用。使用 vue.js 和 firebase 设置用户邀请系统?
【发布时间】:2020-12-20 20:40:21
【问题描述】:

由于 firebase 已弃用 firebase 邀请,使用 vue + firebase 创建安全邀请系统的最佳方法是什么?

在 firebase 身份验证之上,假设我们有 2 个 firestore 表:

  • users 包含用户 ID 和项目特定数据
  • projects,其中每个集合都包含项目特定数据和角色映射,将 firebase 用户 ID 映射到其权限,例如。 {"rf276ft87gsa7vgwv":"owner"}

然后我们可以在 firestore 中设置规则,以便只有在字典中具有正确角色的经过身份验证的用户才能读取/写入 projects 集合中的给定文档。

在我看来,没有办法安全地实施邀请系统,假设一切都在客户端运行。特别是,必须将新用户插入到projects 表中,这意味着任何已登录的用户都将拥有任何项目的编辑权限。

我看到的唯一选项似乎是一种解决方法:作为已登录的项目所有者,使用 fb.auth.createUserWithEmailAndPassword() 为要邀请的电子邮件创建一个帐户,然后使用密码恢复。

【问题讨论】:

    标签: vue.js google-cloud-firestore firebase-authentication


    【解决方案1】:

    从 Firebase 邀请迁移到具有自定义共享的动态链接 documentation 中所述,尽管邀请将停止使用,但您仍然可以使用 Firebase Dynamic Links,这实际上是真正强大的邀请:

    Firebase 邀请已弃用。 2020 年 1 月 24 日,我们将停止支持 Firebase 邀请。您将能够将Firebase Dynamic Links 与自定义共享解决方案一起使用。

    所以重建邀请唯一剩下要做的就是构建一个自定义sharing solution,链接上有一个如何执行它的示例:

    类似于以下示例的东西在这里应该可以工作(建议您在自己的代码中使用常量字符串资源):

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Here's a new lesson for" +
            " learning more Miwok vocabulary:\n\n" + dynamicLink);
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Let's Learn Miwok!");
    sendIntent.setType("text/plain");
    startActivity(Intent.createChooser(sendIntent,
            getResources().getText(R.string.send_to)));
    

    还有更多例子here

    【讨论】:

    • 从文档中,我知道这对 Android 来说是一个很好的答案。那么 vue.js 应用呢?
    • 答案不仅适用于安卓,如何创建自定义共享的示例确实适用于安卓,但在 vuejs 上,您可以通过您的网站共享它,使用 动态链接 支持 Firebase Invites 是我想要强调的。对于 vuejs,您可以通过发送参数从控制台、REST APImanually 创建动态链接,然后在您的网站上分享它
    猜你喜欢
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多