Firebase Admin Java SDK没有执行任何操作

时间:2017-02-14 09:34:17

标签: java firebase firebase-admin

我使用this指南

设置了firebase管理SDK

所以我用以下方式初始化它。

InputStream refreshToken = new ClassPathResource(CONFIG_FILE).getInputStream();

FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredential(FirebaseCredentials.fromRefreshToken(refreshToken))
            .setDatabaseUrl("https://<project-id>.firebaseio.com/")
            .build();

FirebaseApp.initializeApp(options);

到目前为止我没有任何错误,一切似乎都很好。但是,我无法进行任何操作。调用方法什么都不做。例如:

FirebaseDatabase.getInstance()
            .getReference()
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                      //this callback is never called
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

class Pojo {

    public Pojo(String name, String surname) {
        this.name = name;
        this.surname = surname;
    }

    String name;
    String surname;
    //omitted getters and setters
}


FirebaseDatabase.getInstance.getReference()
                .push()
                .setValue(new Pojo("Test", "Test"));
//this value is never set

看起来skd忽略了任何命令。有什么想法吗?

背景:我在本地计算机上将其作为Web应用程序(弹簧)运行。

1 个答案:

答案 0 :(得分:2)

如果您使用Add Firebase to your app中记录的服务帐户密钥JSON文件对SDK进行身份验证,则应使用fromCertificate()方法,而不是fromRefreshToken()方法:

FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

FirebaseOptions options = new FirebaseOptions.Builder()
  .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
  .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
  .build();

FirebaseApp.initializeApp(options);

使用刷新令牌进行身份验证是一种高级用例,可能不是您想要使用的。