由于 CRC 无效而无法注册 Twitter webhook

问题描述 投票:0回答:2

我在注册我的 Twitter webhook 时遇到问题。我正在使用 twitterdev/account-activity-dashboard,虽然请求到达了 webhook(我可以在日志中看到它),但我一直收到这个回报:

Webhook URL 不符合要求。无效的 CRC 令牌或 json 响应格式。

我相信我已经非常仔细地遵循了这里的描述: https://github.com/twitterdev/account-activity-dashboard

我的凭证是正确的,权限是正确的,我已经设置了一个环境。

服务器端在 node.js 中。响应 webhook 创建请求的简单代码在这里。

我正在使用加密库创建 hmac(同样,如上面链接中提供的示例所示。)

function twitterWebhook(req, res, next)
{
my.logger.verbose('Entered the Twitter Webhook');
my.logger.verbose('Here is the url: ' + JSON.stringify(req.url));
my.logger.verbose('Here is the query: ' + JSON.stringify(req.query));

var crc_token = req.query.crc_token;

my.logger.verbose('crc_token is:  ' + crc_token);
my.logger.verbose('secret is   :  ' + conf.T_consumer_secret);

var hmac = crypto.createHmac('sha256', 
conf.T_consumer_secret).update(crc_token).digest('base64');
my.logger.verbose('hmac is     :  ' + hmac);

if (req.method.toLowerCase() == 'get'){
    var aResponse = {response_token:hmac};
    var aResponseString = JSON.stringify(aResponse);
    res.send(hmac);
}
node.js twitter webhooks
2个回答
0
投票
response_token: 'sha256=' + hmac

您必须在响应令牌的开头添加

sha256=
,添加后同样的问题得到解决。


0
投票

我正在使用 python3.7 + ngrok 为我的 callbakurl 和 nodejs 服务提供的 Twitter 来管理 callbackurl,订阅。

  1. 在这里找到 nodejs:官方 Twitter 帐户活动仪表板
  1. 这是我通过 ngrok 公开的烧瓶 webhook

    @app.route('/webhook/twitter', methods=['GET'])
    def webhook_challenge():
        # creates HMAC SHA-256 hash from incoming token and your consumer secret
        sha256_hash_digest = hmac.new(API_KEY_SECRET.encode('utf-8'), msg=request.args.get('crc_token').encode('utf-8'),                                  digestmod=hashlib.sha256).digest()
    
        # construct response data with base64 encoded hash
        response = {'response_token': 'sha256=' + base64.b64encode(sha256_hash_digest).decode('utf-8')}
    
        # returns properly formatted json response
        return json.dumps(response)
    

重要的是要注意,在您设置应用程序后,您的 Twitter 帐户 API 仪表板,继续并再次重新生成密钥。

由于您将运行两个应用程序,对于我来说是 Flask 应用程序和 NodeJs 应用程序,请确保更新所有应用程序中的所有 Consume Api 密钥和访问令牌。

更新失败将导致错误。在我的例子中,我没有在我的 Flask 应用程序上更新 Consumer_Api_Secret 并且收到错误消息 Webhook URL 不符合要求。无效的 CRC 令牌或 json 响应格式。

© www.soinside.com 2019 - 2024. All rights reserved.