首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证Trello webhook

验证Trello webhook
EN

Stack Overflow用户
提问于 2018-03-06 08:42:20
回答 1查看 447关注 0票数 0

我在验证Trello webhook时遇到了麻烦,不管是PHP还是Node.js。我直接从这里复制了Node.js版本:https://developers.trello.com/page/webhooks

代码语言:javascript
复制
var crypto = require('crypto');

function verifyTrelloWebhookRequest(request, secret, callbackURL) {
  var base64Digest = function (s) {
    return crypto.createHmac('sha1', secret).update(s).digest('base64');
  }
  var content = JSON.stringify(request.body) + callbackURL;
  var doubleHash = base64Digest(base64Digest(content));
  var headerHash = base64Digest(request.headers['x-trello-webhook']);
  return doubleHash == headerHash;
}

但是,对于Node.js版本,我确实替换了request、secret和callbackURL的值。我得到的PHP版本是:

代码语言:javascript
复制
function h( $s ) {
    return base64_encode( hash_hmac( 'sha1', $s, $secret ) );
}

$incomingHash = $_SERVER['HTTP_X_TRELLO_WEBHOOK'];
$h2 = h( h( $post . $callbackURL ) );
$h1 = h( $incomingHash );   

在这一点上,我想我弄错了“秘密”,尽管我已经尝试了令牌,oauth秘密,和api密钥或Trello改变了散列算法,但我不想排除我的特长(有问题的错误)。FWIW我确实验证了回调URL就是Trello的API所说的那样。

EN

回答 1

Stack Overflow用户

发布于 2018-03-07 05:23:45

因此,我通过返回HMAC散列的二进制文件和使用OAuth1密钥使其正常工作。

代码语言:javascript
复制
function h( $s ) {
    return base64_encode( hash_hmac( 'sha1', $s, $secret, true ) );
}

$incomingHash = $_SERVER['HTTP_X_TRELLO_WEBHOOK'];
$h2 = h( h( $post . $callbackURL ) );
$h1 = h( $incomingHash );

可以通过以下方式查找使用的回调地址:https://developers.trello.com/v1.0/reference#tokenstokenwebhooks

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49121721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档