2

我已经使用指南设置了 firebase admin 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 应用程序(spring)运行。

4

1 回答 1

2

如果您使用将 Firebase 添加到您的应用程序中记录的服务帐户密钥 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);

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

于 2017-02-15T01:02:31.767 回答