Android中的多个公共Firebase数据库实例

时间:2018-06-17 10:22:29

标签: android firebase firebase-realtime-database firebase-authentication

我正在完成作业。我使用由提供商提供的数据库&hacker-news'。我也使用Firebase身份验证。我在自己的帐户中设置了一个新项目。从Hacker-news数据库中检索数据可以使用以下行。我能够使用firebase child()API获取可公开访问的数据

database = FirebaseDatabase.getInstance("https://hacker-news.firebaseio.com/");

但是当我实施Firebase身份验证时,一旦用户登录就会出错

  

提供的身份验证凭据无效。这通常表示您的FirebaseApp实例未正确初始化。确保您的google-services.json文件具有正确的firebase_url和api_key

我花了很多时间在互联网上找到了在单个项目中实现多个数据库的链接 - Working with multiple Firebase projects in an Android app by Google

仅当您是这些数据库的所有者时才有效。无论如何我可以使用SDK而不是REST-API访问Hacker-news数据库吗?

1 个答案:

答案 0 :(得分:0)

        FirebaseOptions options = new FirebaseOptions.Builder()
                        .setDatabaseUrl(getResources().getString(R.string.dbURL))
                        .setApiKey(getResources().getString(R.string.api))
                        .setApplicationId(getResources().getString(R.string.appID))
                        .setProjectId(getResources().getString(R.string.projectId))
                        .setStorageBucket(getResources().getString(R.string.storageBucket)).build();
//set all variable above as your need

        boolean hasBeenInitialized=false;
                List<FirebaseApp> fireBaseApps = FirebaseApp.getApps(getApplicationContext());
                for(FirebaseApp app : fireBaseApps){
                    if(app.getName().equals("any_name")){
                        hasBeenInitialized=true;

                    }
                }

                if (!hasBeenInitialized) {
                    smaTeacher = FirebaseApp.initializeApp(this, options, "any_name");

                }
    database=FirebaseDatabase.getInstance(FirebaseApp.getInstance("any_name"));