Skip to main content

Hi,

I am having an issue to match the airtable-content-mac from the header with the one I computed following the instructions from the documentation .

So we tried the following:

const decodedMacSecret = atob('macSecretBase64'); //macSecretBase64 from create webhook
const body = `{
"base": {
"id": "appjRdIX59U4YEy4l"
},
"webhook": {
"id": "achXH94CxHYGdUcje"
},
"timestamp": "2024-03-06T00:32:58.992Z"
}`

const hmac = createHmac('sha256', decodedMacSecret);
console.log(body)
hmac.update(body.toString(), 'ascii'); // I also tried JSON.stringify(body);
console.log('received header: hmac-sha256=0fb79298bc57a45a34ca1d04f5237fd4a9a9223fd5c90cc04f35d3c3890180cc');
console.log('computed: hmac-sha256=' + hmac.digest('hex'));

Thanks

I was using atob to decode the mac secret that is why it was not working.

This piece of code worked !

const macSecretFromCreate = "<mac_secret_string_from_create_endpoint>";
const macSecretDecoded = new Buffer(macSecretFromCreate, 'base64');

// example request body
const requestBody = '{"base":{"id":"<the app id>"},"webhook":
{"id":"<the webhook id>"},"timestamp":"<timestamp value"}'

const hmac = require('crypto').createHmac('sha256', macSecretDecoded);
hmac.update(requestBody.toString(), 'ascii');
const expectedContentHmac = 'hmac-sha256=' + hmac.digest('hex');

 


Reply