【问题标题】:Multiple Firebase projects in one app一个应用中的多个 Firebase 项目
【发布时间】:2016-09-22 06:56:43
【问题描述】:

我正在构建一个应用程序,其中包含任意数量的“微型社区”。目前一个用户只能属于一个,所以当他们最初注册时,他们输入一个密码,将他们与相关社区相关联。

将这些“微型社区”(由未来的客户拥有,在应用程序上使用空间)分离到单独的 Firebase 项目或将所有数据放在一起是否明智?

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

    Firebase 现在支持在一个应用中访问多个项目。无需走微社区路线。这是有关如何操作的教程:https://firebase.google.com/docs/configure/

    我目前在我的 Android 项目中使用它,所以如果您在设置它时遇到问题并在 Android 中实现它,请随时发表评论!

    编辑

    当您为您的应用配置 Firebase 时,您默认使用一个数据库帐户。如果您想使用第二个(或更多),请继续阅读。

    在您的活动或片段中,您必须使用您的所有帐户信息初始化一个 FirebaseOptions 实例,使用代表第二个帐户的标记名称初始化一个 FirebaseApp,然后获取您的 FirebaseApp 的实例,最后,获取一个 DatabaseReference 实例您的第二个帐户,以便您可以随意使用它。这是我使用的代码块:(注意:您作为 FirebaseOptions 实例的参数输入的信息与您的 SECOND 数据库帐户相关联):

    private void initSecondFirebaseAcct()
    {
        FirebaseOptions options = new FirebaseOptions.Builder()
                .setApplicationId("<your application id>")
                .setApiKey("<your api key>")
                .setDatabaseUrl("<your DB url that ends in 'firebaseio.com/' ")
                .build();
    
        try
        {
            FirebaseApp.initializeApp(this, options, "<database tag>");
        }
        catch (Exception e)
        {
            Log.d("Firebase error", "App already exists");
        }
    
        mMySecondApp = FirebaseApp.getInstance("<database tag>");
        mSecondDBRef = FirebaseDatabase.getInstance(mMySecondApp).getReference();
    }
    

    希望有帮助!

    【讨论】:

    • 项目之间是否可以共享用户认证?
    • @David,我似乎无法理解如何在同一个 IOS 应用程序中配置多个项目。你能给我一个提示或答案吗? stackoverflow.com/questions/44866220
    • @bibscy 我编辑了可能对您有所帮助的答案。但我只在 Android 而不是 iOS 中这样做过,所以可能不一样。希望你能弄明白!
    • @DavidVelasquez 我遇到了一个小问题,我尝试使用 REST API 在 Firebase 数据库上执行多路径更新。能否请你帮忙。谢谢你。 stackoverflow.com/questions/46100421
    • 两个项目在创建时使用相同的设置(包名、sha-1 等...)?
    【解决方案2】:

    我建议您将所有社区保持在一起。首先,因为我不确定您是否可以在同一个应用中使用多个 Firebase 项目。

    我建议您将此“社区”作为项目及其所有当前信息存储在您的数据库中。例如:

    {
        "Communities":{
                "CommunityKey1":{
                    "communityName":
                    "createdDate":
                    ....
                }
                "CommunityKey2":{
                    "communityName":
                    "createdDate":
                    ....
                }
                "CommunityKey3":{
                    "communityName":
                    "createdDate":
                    ....
                }
                ....
            }
    }
    

    当您将用户添加到您的数据库时,只需为他们添加一个关联字段“currentCommunity”或类似的内容,您可以在其中存储该用户的关联社区 ID。然后,当您想过滤一个社区的用户时,只需使用:

    FirebaseDatabase.getInstance().getReference().child("users").child("currentCommunity");
    

    您可以在查询结束时使用.equalTo("CommunityID") 进行更多过滤。我不是 Firebase 的专家,但我正在做一个具有类似用户过滤的应用程序(使用组而不是社区,它们可以属于多个),最好的方法是使用这个模型.

    【讨论】:

    • 非常感谢!我也是这么想的。
    【解决方案3】:

    我一直在考虑并尝试解决同样的问题。到目前为止,我发现构建具有可能“付费”方面的微社区之类的最佳方式是在一个项目中拥有登录/用户配置文件/会员资格关联。然后其成员部分包含其他 Firebase 项目的连接信息。然后每个社区都是一个单独的项目,都有自己的使用分析、空间、带宽使用等……是的,可以在您的应用程序中访问多个 firebase 项目。 https://firebase.google.com/docs/configure/

    所以下一个问题是,当有人创建新的“社区”时,我可以动态/cli 克隆一个 firebase 项目并为其数据播种初始数据吗? https://firebase.google.com/docs/cli/

    祝你好运:)

    【讨论】:

    • 问题是谷歌允许使用多个项目,因为这可能违反配额计算?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多