Android中的多个公共Firebase数据库实例
我正在做一项任务。我必须使用“黑客新闻”提供商提供的数据库。我还必须使用Firebase身份验证。我在自己的帐户中设置了一个新项目。从黑客新闻数据库中检索数据的方法如下。我能够使用firebase child()API获取公开访问的数据 但当我实现Firebase身份验证时,一旦用户登录,它就会给出错误消息 提供的身份验证凭据无效。这通常表示FirebaseApp实例未正确初始化。确保您的google-services.json文件具有正确的firebase_url和api_密钥 我花了很多时间在互联网上,找到了一个链接,可以在一个项目中实现多个数据库- 仅当您是这些数据库的所有者时,此操作才有效。我是否可以使用SDK而不是REST-API访问黑客新闻数据库?Android中的多个公共Firebase数据库实例,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我正在做一项任务。我必须使用“黑客新闻”提供商提供的数据库。我还必须使用Firebase身份验证。我在自己的帐户中设置了一个新项目。从黑客新闻数据库中检索数据的方法如下。我能够使用firebase child()API获取公开访问的数据 但当我实现Firebase身份验证时,一旦用户登录,它就会给出错误消息 提供的身份验证凭据无效。这通常表示FirebaseApp实例未正确初始化。确保您的google-services.json文件具有正确的firebase_url和api_密钥 我花了很多时间
FirebaseOptions=new FirebaseOptions.Builder()
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"));
.setDatabaseUrl(getResources().getString(R.string.dbURL))
.setApiKey(getResources().getString(R.string.api))
.setApplicationId(getResources().getString(R.string.appID))
.setProjectId(getResources().getString(R.string.projectId))
.setStorage Bucket(getResources().getString(R.string.storageBucket)).build();
//根据需要设置上述所有变量
布尔hasBeenInitialized=false;
列出fireBaseApps=fireBaseApps.getApps(getApplicationContext());
用于(FirebaseApp应用程序:FirebaseApp){
如果(app.getName().equals(“任意_名称”)){
hasBeenInitialized=true;
}
}
如果(!hasBeenInitialized){
smaTeacher=FirebaseApp.initializeApp(此选项为“任意名称”);
}
database=FirebaseDatabase.getInstance(FirebaseApp.getInstance(“任意_名称”));
我遇到了这个解决方案,但我所拥有的只是数据库URl,我没有黑客新闻的其他参数(projectId等),如果您只是省略其他值,只使用FirebaseOptions builder中的数据库URl会怎么样?我也试过了。它向我抛出了一个错误,即projectId是必需的。
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"));