Firebase Admin 6.2.0升级问题:服务器可以';t访问实时数据库

Firebase Admin 6.2.0升级问题:服务器可以';t访问实时数据库,firebase,firebase-realtime-database,firebase-admin,google-cloud-endpoints-v2,Firebase,Firebase Realtime Database,Firebase Admin,Google Cloud Endpoints V2,我最近将我的Google Cloud Endpoints服务器从Firebase Admin 4.1.2升级到了6.2.0。但是,升级后,服务器似乎无法以升级前的方式访问我的Firebase实时数据库 除了指定Firebase Admin 6.2.0而不是4.1.2的Gradle文件之外,我唯一更改的代码是在这个初始化块中: static { FirebaseOptions options = null; FileInputStream serviceAccount =

我最近将我的Google Cloud Endpoints服务器从Firebase Admin 4.1.2升级到了6.2.0。但是,升级后,服务器似乎无法以升级前的方式访问我的Firebase实时数据库

除了指定Firebase Admin 6.2.0而不是4.1.2的Gradle文件之外,我唯一更改的代码是在这个初始化块中:

static {

    FirebaseOptions options = null;
    FileInputStream serviceAccount =
            null;
    try {
        serviceAccount = new FileInputStream(new File("WEB-INF/path_to_file.json"));
        options = new FirebaseOptions.Builder()
                //.setCredential(FirebaseCredentials.fromCertificate(serviceAccount)) OLD VERSION
                .setCredentials(GoogleCredentials.fromStream(serviceAccount)) // NEW VERSION
                .setDatabaseUrl(FIREBASE_NAME)
                .build();
        FirebaseApp.initializeApp(options);
    } catch (Exception e) {
        Log.warning(e.getMessage());
        e.printStackTrace();
    }
}
这里唯一更改的一行是
setCredentials()

我目前的假设是,问题是某种身份验证问题。但json文件中的服务帐户密钥可能不会有任何问题,否则旧版本的服务器也会有同样的问题。以前有人遇到过这种问题吗?关于问题的根源有什么理论吗

更新:我尝试过使用初始化块,看看如果我注释掉
setCredentials()
行,或者给
FileInputStream
提供了错误的路径,或者将错误的url传递给
setDatabaseUrl()
,会发生什么。在所有这些情况下,我都记录了某种错误,表明初始化失败。但是,对于上面的代码,我不会记录任何错误。因此,这个问题仍然是个谜

我用来访问实时数据库的测试代码非常简单:

    final FirebaseDatabase database = FirebaseDatabase.getInstance();
    final DatabaseReference ref = database.getReferenceFromUrl(FIREBASE_NAME);

    Map<String, Object> testMap = new HashMap<String, Object>();
    testMap.put("test", "test");

    ref.child("server_test").updateChildrenAsync(testMap);
final FirebaseDatabase=FirebaseDatabase.getInstance();
final DatabaseReference=database.getReferenceFromUrl(FIREBASE_名称);
Map testMap=newhashmap();
testMap.put(“test”、“test”);
ref.child(“服务器测试”).updateChildrenAsync(testMap);

然而,没有任何东西被写入。

通过一个消除过程,我最终设法将问题的根源追溯到我的
appengine web.xml
文件。该文件包含一行,需要更改该行才能使升级的服务器正常工作:

之前:
urlfetch

之后:
native


如果有人面临类似的问题,我希望这可能会很有用。

据我所知,
initializeApp
方法不再接受参数。升级时,您是否遵循了他们关于突破性更改的指南?谢谢您的评论,但是
FirebaseApp.initializeApp(options)
似乎是正确的,正如这里的代码片段所示:()哦,我想您使用的是SDK的1.0版本。从这里得到我的信息:()只是为了澄清:我的问题涉及到用Java代码编写的Google Cloud Endpoints服务器;这不是Firebase云函数JS代码。