我尝试对我的Firebase数据库进行REST调用。我已成功使用我的数据库密钥,但我正在尝试使用令牌。当我使用令牌进行休息时,我收到错误:
"error" : "Missing claim 'kid' in auth header."
我正在从我的服务器拨打电话,因为其他原因我无法使用服务器SDK,所以我必须使用REST。我对其他解决方案持开放态度,但基本上我希望能够使用数据库规则。我的印象是,如果你使用SECRET,它会覆盖定义的规则。
String uid = "123";
Map<String, Object> auth = new HashMap<String, Object>();
auth.put("uid", uid);
FirebaseOptions options = new FirebaseOptions.Builder()
.setServiceAccount(new FileInputStream(serviceAccountJson))
.setDatabaseUrl(myFirebaseAddress)
.setDatabaseAuthVariableOverride(auth)
.build();
FirebaseApp.initializeApp(options);
String customToken = FirebaseAuth.getInstance().createCustomToken(uid);
Request request = new Request.Builder()
.url("myFirebaseAddress"+"/users.json?auth="+customToken)
.build();
Response response = client.newCall(request).execute();
String responseString = response.body().string();
System.out.println(responseString);