我要这样做的原因是,我想使用Java编写的桌面应用程序使用Firebase实时数据库。但是我不能使用Admin SDK,因为它将由最终用户使用,并且我不想提供服务密钥。
目前,我可以使用Firebase RestAPI读写数据到Firebase,但是我无法在数据可用后立即检索它,需要一些功能,例如“ childEventListener”。而且我想,也许我可以通过通过JavaScript引擎运行rest api来实现这一目标。这就是我想要做的:
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("nashorn");
engine.eval(new FileReader("firebase-listener.js"));
和firebase-listener.js中的
load("firebase.js");
var config = {
apiKey: "...",
authDomain: "xxx.firebaseapp.com",
databaseURL: "https://xxx.firebaseio.com",
projectId: "xxx",
storageBucket: "xxx.appspot.com",
messagingSenderId: "..."
};
var defaultApp = firebase.initializeApp(config);
我得到了
javax.script.ScriptException: TypeError: Cannot read property "fetch" from
undefined in firebase.js at line number 1
此时卡住。也许这是不可能的,或者我搜索的方式是错误的...如果是这种情况,请指出正确的方向或给出一些解释,说明为什么不可能/不正确的方式。