我使用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应用程序(弹簧)运行。
答案 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);
使用刷新令牌进行身份验证是一种高级用例,可能不是您想要使用的。