我的Firebase数据库的结构可以成功保存来自HTTP POST请求的数据,直接从我的Angular开发应用程序发送测试请求即可确认:
CreatePost(){
let body = {
"host_id" : 1,
"uuid" : 1,
"id" : 1,
"status" : "ENDED"
}
this.http.post( this.url, body )
Firebase数据库更新结果:
-zoom
-L1dZbBWMTIr7ojjodzg
host_id: 1
id: 1
status: "ENDED"
uuid: 1
但是,使用与第三方服务(缩放会议)的WebHook端点相同的数据库URL,数据库不会更新以响应WebHook触发事件,例如开始会议。
Zoom WebHook POST正在正确发送,正如对RequestBin的测试所确认的那样:
FORM/POST PARAMETERS
host_id: w_1a9RDvTKqiG_BBdV7kuw
status: STARTED
id: 3544245503
uuid: oJ+nrTm7Rwq1NYlpML7W/Q==
Raw Body:
id=3544245503&uuid=X%2F1R2AC1QS%2Btjuhxc0Kt%2Bw%3D%3D&
host_id=w_1a9RDvTKqiG_BBdV7kuw&status=STARTED
有没有人有使用Firebase作为其WebHook端点的经验?是否需要以特定方式为Firebase配置WebHook POST?
答案 0 :(得分:2)
要在REST请求中将数据POST(或PUT)到Firebase数据库,请求正文必须包含要写入的JSON对象。来自Firebase documentation:
curl -X POST -d '{
"author": "alanisawesome",
"title": "The Turing Machine"
}' 'https://docs-examples.firebaseio.com/rest/saving-data/fireblog/posts.json'
您的代码将主体中的表单字段作为url-encoded发布,这只是一种不同的格式。请参阅此答案,以便比较两种格式的相同数据:https://stackoverflow.com/a/9880122。
如果Zoom不支持将表单字段作为JSON发布,您可以考虑创建Cloud Function来进行转换。