Facebook Messenger 回发被调用三次
Facebook Messenger Postback Called thrice
我已经成功创建了一个 facebook 聊天机器人。我也在我的应用程序中实现了消息回发,它似乎在我的 android 设备 (Messenger V 68.0.0.22.67)
中运行良好。
但是当我尝试使用带有 Messenger V 76.0.0.13.70
的 Samsung Galaxy S5 时,所有事件 postback
都被调用了三次。我什至尝试使用其他一些现有的 facebook 机器人来测试同一设备中的回发事件,并且那里的情况也相同。我每次回发都会收到三次回复。
会不会是信使版本有问题?到目前为止,我找不到与此相关的任何问题日志。
非常感谢任何帮助。
当 Facebook 在 headers 中发回的签名与您为负载计算的签名不匹配时,就会发生这种情况。 returns 向 Facebook 发送 500,Facebook 重试此请求两次(总共三个请求)。
问题
问题是某些字符必须使用 UNICODE 编码。
例如:
@ character has to be replaced with "\u0040" before the hash is calculated.
解决方案
我只是在 Facebook Messenger 模块的 verifySignature 中完成了此操作
let hash = crypto.createHmac('sha1',this.APP_SECRET).update(JSON.stringify(req.body).replace(/@/g,"\u0040").replace(/\//g, '\/')).digest('hex');
本文深入探讨了解决方案。
https://hackernoon.com/regenerating-a-raw-request-payload-an-impossible-task-e4133fb2571
我已经成功创建了一个 facebook 聊天机器人。我也在我的应用程序中实现了消息回发,它似乎在我的 android 设备 (Messenger V 68.0.0.22.67)
中运行良好。
但是当我尝试使用带有 Messenger V 76.0.0.13.70
的 Samsung Galaxy S5 时,所有事件 postback
都被调用了三次。我什至尝试使用其他一些现有的 facebook 机器人来测试同一设备中的回发事件,并且那里的情况也相同。我每次回发都会收到三次回复。
会不会是信使版本有问题?到目前为止,我找不到与此相关的任何问题日志。
非常感谢任何帮助。
当 Facebook 在 headers 中发回的签名与您为负载计算的签名不匹配时,就会发生这种情况。 returns 向 Facebook 发送 500,Facebook 重试此请求两次(总共三个请求)。
问题
问题是某些字符必须使用 UNICODE 编码。
例如:
@ character has to be replaced with "\u0040" before the hash is calculated.
解决方案
我只是在 Facebook Messenger 模块的 verifySignature 中完成了此操作
let hash = crypto.createHmac('sha1',this.APP_SECRET).update(JSON.stringify(req.body).replace(/@/g,"\u0040").replace(/\//g, '\/')).digest('hex');
本文深入探讨了解决方案。
https://hackernoon.com/regenerating-a-raw-request-payload-an-impossible-task-e4133fb2571