Nativescript:如何在Firebase中以管理员身份登录和管理用户帐户

时间:2019-02-18 23:09:27

标签: typescript firebase-authentication nativescript nativescript-firebase

我正在努力找到一种解决方案,以解决如何使用Firebase Admin服务来管理用户帐户(尤其是从Firebase Auth中删除用户)。

nativescript-plugin-firebase提供了对Firebase服务的所有可能调用,但是没有有关使用管理员权限管理用户的描述。也许有人遇到类似问题或可以共享解决方法?

2 个答案:

答案 0 :(得分:4)

NativeScript插件是Firebase客户端库的包装,您可以在交付给用户的NativeScript应用中使用

Firebase Admin SDK授予对Firebase项目的所有后端资源的管理访问权限。因此,它们只能在可信任的环境中使用,例如开发机器,您控制的服务器或Cloud Functions。

它们明确地不是,意在用在您交付给客户端的应用程序代码中,因为Admin SDK需要的凭据才能正常工作,从而为用户提供更多的权限。 / p>

如果要创建一个在不提供Admin SDK的平台上公开Admin SDK某些功能的Admin页面,则可以将该功能包装在Cloud Function中,以确保调用方已获得适当的授权(如here所示),然后从您的应用程序中调用它。

答案 1 :(得分:2)

这是我在应用程序中进行管理的方式:

  1. 我的用户具有“管理员”,“经理”等权限。

  2. “管理员”登录到应用后,他们可以通过应用界面添加,更新和删除其他用户

  3. 这是通过将更改请求推送到实时数据库中的“ updateUser”节点-到数据库中的实际用户记录来完成的。确保Firebase规则仅允许“管理员”用户写入该节点。

  4. 一旦创建了这个新节点,我将禁用表单并提交按钮,因此无法进行其他更改。然后,我让应用程序监听对以下内容的任何更改:

    • 这个新创建的“ updateUser”节点(类似:updateUser/xkekek393kdkd
    • 实际的用户个人资料记录
  5. 我具有Firebase云功能,可监听对该“ updateUser”节点的任何写入

  6. 该函数触发时,它将使用admin-sdk对用户个人资料 AND 的Firebase身份验证帐户(电子邮件地址,密码等)进行实际更改。然后,admin-sdk使用以下状态更新“ updateUser”节点:

    {
      status: "success",
      message: "User updated"
    }
    

    {
      status: "fail",
      message: "Email address already in use"
    }
    
  7. 客户端应用检测到对“ updateUser”节点的更改,并向用户提供操作已完成的反馈。

  8. 客户端应用程序还会检测到对真实用户配置文件节点的更改并相应地更新UI。

优势:

  • 只有受信任的资源(Firebase云功能)有权访问管理员权限。

  • 所有业务逻辑和验证都是在服务器端而不是客户端执行的。