首页 > 解决方案 > 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

先感谢您!

标签: node.jsyoutubeyoutube-apinodejs-serverwebsub

解决方案


推荐阅读