首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SurveyMonkey API是如何创建hmac的?

SurveyMonkey API是如何创建hmac的?
EN

Stack Overflow用户
提问于 2022-03-29 09:34:58
回答 1查看 63关注 0票数 0

我们正在试图验证我们接收到的SurveyMonkey hmac (sm-签名)是否正确.为了检查这一点,我们创建了一个hmac,并将其与SurveyMonkey的hmac进行比较。

我们创建hmac如下(我们正在与nodejs合作):

代码语言:javascript
复制
    let bodyString = JSON.stringify(req.body);
    
    let body = Buffer.from(bodyString, "ascii");
    let apiClientId = Buffer.from(surveyMonkeyClientId, "ascii");
    let apiSecret = Buffer.from(surveyMonkeyApiSecret, "ascii");
    let hmac = crypto
        .createHmac('sha1', apiClientId+'&'+apiSecret)
        .update(Buffer.from(body))
        .digest()
        .toString('base64');

我们已经用(使用python):https://github.com/SurveyMonkey/public_api_docs/blob/main/includes/_webhooks.md验证了这段代码

但出于某种原因,这并不像预期的那样有效。因为我们生成的hmac不同于由SurveyMonkey (sm-签名)生成的hmac。

有人能帮我们吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-03-30 11:06:30

问题在于签名,即json字段之间的空格,当您执行JSON.stringify时,这会移除空格。

一个可能的解决办法是:

代码语言:javascript
复制
let payloadString = JSON.stringify(req.body);
payloadString = payloadString.replace(/":/g, '": ');
payloadString = payloadString.replace(/,/g, ', ');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71659648

复制
相关文章

相似问题

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