node.js - Youtube PubSubHubbub 在我的回调中没有收到发帖请求
问题描述
我正在尝试将 youtube 通知系统集成到 nodejs 中。我有我的端点工作,使用邮递员我可以接收数据。
router.get("/youtube/callback", (req, res) => {
console.log('here', req.body, req.query, req.params, req.headers)
let query = req.query
if('hub.challenge' in query){
let channelID = query['hub.topic'].split('=').pop()
/*if(!bot.youtube.pendingVerify.has(channelID)) {
console.log('Invalid youtube hook sent to me', channelID, req.headers)
return res.sendStatus(401)
}*/
bot.youtube.lease.set(channelID, Date.now() + (query['hub.lease_seconds'] * 1000))
bot.youtube.pendingVerify.delete(channelID)
return res.status(202).send(query['hub.challenge'])
}
})
router.post('/youtube/callback', (req, res) => {
console.log('here post', req.body, req.query, req.params, req.headers)
let hmac = generateHMAC(req.query['hub.challenge'], 'very_secret', "sha1")
})
function generateHMAC(hmac, secret, algo = 'sha256'){
return `${algo}=${crypto.createHmac(algo, secret).update(hmac).digest('hex')}`
}
我什至可以使用订阅订阅https://pubsubhubbub.appspot.com?hub.callback=http://ec5505102119.ngrok.io/api/webhooks/youtube/callback&hub.mode=subscribe&hub.topic=https://www.youtube.com/xml/feeds/videos.xml?channel_id=UC7MIeWKsLh9g-06cl3396yw
如您所见,我正在使用 ngrok 进行测试,并且可以验证子请求。它使获取 /youtube/callback 的请求很好,我回复 202 以确认子,但是当我想使用它测试它时
https://pubsubhubbub.appspot.com/publish
我在哪里输入 topicURL = https://www.youtube.com/xml/feeds/videos.xml?channel_id=UC7MIeWKsLh9g-06cl3396yw
点击发布按钮,然后在我检查相同的主题网址下,我可以清楚地看到它发送了提要,但我没有在我的帖子端点上收到任何内容, 也没有在这里看到
请任何人告诉我我做错了什么。我试图弄清楚过去 2 天,因为没有不和谐的服务器,我不得不在这里问。
编辑:我正在关注 RFC 文档的 0.4 版本https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.4.html#RFC2616
先感谢您!
解决方案
推荐阅读
- angular - 如何使 ng2-Chart 可滚动用于大量数据集?
- c++ - C++ Builder 10.3 不能从 const char[18] 分配给 const wchar_t*
- websocket - JMeter - 我需要同时打开并保持多个 websocket 连接才能在 JMeter 中并行使用它们
- r - 如何在 R 中找到单个参数的所有选项?
- r - 无法将矩阵附加到 R 中的现有矩阵
- sql - 使用 SQL 查询根据连续值更新最小值
- hyperledger-fabric - 将 Chaincode 部署到 Hyperledger Fabric 不起作用
- flutter - 颤动的firebase云功能模拟器,随叫随到的功能不起作用
- android - 如何制作一个看起来像这样的首选项屏幕?
- orm - Doctrine : 为对象管理器设置查询提示