未能获取 FirebaseDatabase 实例。在 FirebaseApp 中指定 DatabaseURL
Posted
技术标签:
【中文标题】未能获取 FirebaseDatabase 实例。在 FirebaseApp 中指定 DatabaseURL【英文标题】:Failed to get FirebaseDatabase instance. Specify DatabaseURL within FirebaseApp 【发布时间】:2018-05-23 16:14:09 【问题描述】:FirebaseApp 在调用FirebaseDatabase.getInstance()
时抛出异常。
错误信息
无法获取 FirebaseDatabase 实例:在其中指定 DatabaseURL FirebaseApp 或来自您的 getInstance() 调用。
Firebase
项目配置正确。 Authentication
正常工作,但无法连接到 firebase
。
这是我的应用级 gradle.build 文件
build.gradle
dependencies
.....
//Firebase database
implementation 'com.google.firebase:firebase-database:11.6.2'
// Firebase Invitation
implementation 'com.google.firebase:firebase-invites:11.6.2'
// Firebase Authentication
implementation 'com.google.firebase:firebase-auth:11.6.2'
// Google Sign In SDK (only required for Google Sign In)
implementation 'com.google.android.gms:play-services-auth:11.6.2'
// people api request libraries
implementation 'com.google.api-client:google-api-client:1.22.0'
implementation 'com.google.api-client:google-api-client-android:1.22.0'
implementation 'com.google.apis:google-api-services-people:v1-rev4-1.22.0'
compile project(':customsupport')
apply plugin: 'com.google.gms.google-services'
和项目级别的build.gradle文件
buildscript
repositories
jcenter()
maven url 'https://maven.fabric.io/public'
dependencies
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.1.2'
// We recommend changing it to the latest version from our changelog:
// https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
classpath 'io.fabric.tools:gradle:1.24.4'
DatabaseException 将发生在 FirebaseDatabase.class
public static synchronized FirebaseDatabase getInstance(FirebaseApp var0, String var1)
if(TextUtils.isEmpty(var1))
throw new DatabaseException("Failed to get FirebaseDatabase instance: Specify DatabaseURL within FirebaseApp or from your getInstance() call.");
else
...
【问题讨论】:
我想知道FirebaseApp
是否初始化成功。您能否尝试记录FirebaseApp.getInstance().getOptions().getDatabaseUrl()
返回的字符串以查看调用是否完成以及结果是否为空?
@Bob Snyder getDatabaseUrl() 返回 null,但 getProjectId()、getApiKey() 和 getApplicationId() 返回正确值
您的google-services.json
文件是否具有firebase_url
属性?它将位于project_info
下的文件顶部附近。
尝试重新生成您的google-services.json
。它的顶部应该有一个 project_info
对象,其中包含:project_number
、firebase_url
、project_id
和 storage_bucket
。
如果通过 FirebaseDatabase.getInstance("https://blahblah-dbf79-default-rtdb.firebaseio.com/");
硬编码 db url 也可以工作。我遇到了这个问题,因为我首先复制了google-services.json
,然后我添加了实时数据库,所以我的 json 没有更新,并且通过 db url 的硬编码来修复。但是有一次,我更新了 json
,我删除了 db url 硬编码。
【参考方案1】:
如果有人在 2021 年遇到这个问题,那么只需按照以下步骤操作:- 在 build.gradle/app 中添加这些依赖项
implementation platform('com.google.firebase:firebase-bom:26.3.0')
implementation 'com.google.firebase:firebase-database-ktx'
然后使用数据库引用对象
databaseReference=Firebase.database.getReference("Users")
还是一头雾水然后在这里阅读此文档1
【讨论】:
【参考方案2】:我再次下载了google-services.json
文件,因为我刚刚添加了实时数据库。
你的文件应该有
"project_info":
"project_number": "123456789",
"firebase_url": "https://example.firebaseio.com",
"project_id": "example",
"storage_bucket": "example.appspot.com"
,
...
【讨论】:
【参考方案3】:这是我为 ios 项目所做的。
在我下载了 GoogleService-Info.plist 文件并将其添加到我的项目后,我一直在崩溃
无法获取 FirebaseDatabase 实例:在其中指定 DatabaseURL FIRApp 或从您的数据库ForApp:URL: 调用。
在谷歌搜索并没有找到具体答案后,我查看了我拥有的另一个项目中的 GoogleService-info.plist
文件,DATABASE_URL
密钥在那里,但在崩溃的那个中丢失了
您只需 3 个简单的步骤:
1- 打开你的谷歌GoogleService-info.plist
2- 将DATABASE_URL
键重新输入到文件中
3- 转到您的 Firebase 控制台 > RealtimeDatabase > 复制并粘贴或从那里输入 https//...
url string
作为 DATABASE_URL
文件中 DATABASE_URL
键的值
一定要加上https//:部分(从图片上可能看不出来)
【讨论】:
就我而言,我确实错过了 databaseURL 键值【参考方案4】:您可以转到 Firebase 控制台: 1-选择您的项目。 2-从左侧菜单的“实时数据库”点击进入“数据”选项卡,在这里您可以轻松访问所需的数据库URL,您可以在第一行找到它,然后请使用以下代码行:
DatabaseReference mdatabaseref=FirebaseDatabase.getInstance().getReferenceFromUrl(url);.
一切就绪。 for example you can find the URL in this picture underlined by red
请看一下: Assign a firebase database url(String) to a Database Reference variable?
【讨论】:
【参考方案5】:只需在 getInstance() 中添加您的 firebase url
FirebaseDatabase database = FirebaseDatabase.getInstance("YOUR FIREBASE URL HERE");
这对我有用。
【讨论】:
【参考方案6】:升级 build.gradle(modular) 中实现包以下的版本。
dependencies
//noinspection GradleDependency
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'com.google.firebase:firebase-database:19.6.0'
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
【讨论】:
【参考方案7】:在 Kotlin 中 从此处复制您的数据库网址,然后将此网址粘贴到您的代码中。
refUsers = FirebaseDatabase.getInstance("https://tictic-97910.firebaseio.com/").reference.child("Users").child(firebaseUserId)
【讨论】:
【参考方案8】:在 AndroidManifest.xml 中将您的构建依赖项升级到 19.7.0
implementation 'com.google.firebase:firebase-database:19.7.0'
Android Studio -> Tools -> Firebase
中的默认设置使用了导致此问题的旧版本。
【讨论】:
【参考方案9】:<key>DATABASE_URL</key>
<string>https://appName-bgbtty-default-bblebut.firebaseio.com</string>
转到 google 服务 作为源代码打开,然后将其插入到 google api id 下方(底部)
【讨论】:
【参考方案10】:google-services.json
"project_info": "firebase_url":""
【讨论】:
虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。【参考方案11】:这是您的 Google p.list 的问题。启用 Firebase 数据库后,只需从 Firebase 仪表板/项目设置中重新下载即可。
【讨论】:
以上是关于未能获取 FirebaseDatabase 实例。在 FirebaseApp 中指定 DatabaseURL的主要内容,如果未能解决你的问题,请参考以下文章
未能获取默认 Firebase 数据库实例。必须调用`[FIRApp 配置]