Tengo problemas para validar la firma HMAC durante Shopify OAuth.
Cuando el comerciante hace clic en "instalar", se envía a mi URL de autenticación. La url tiene parámetros agregados así:
https:my-appp.com/shopify_oauth?hmac=74dac492e0605a9d547e8e1e58a287a7748ce8e2679c40b8953d72691c3314c9&host=ZGdoYmpkZnNnYmpoLm15c2hvcGlmeS5jb20vYWRtaW4&shop=merchants_store.myshopify.com×tamp=1654472682Según la documentación
Elimino el HMAC, reconstruyo la cadena de consulta con todos los demás parámetros en orden alfabético. Luego lo ejecuto a través de una función hash SHA-256 que incluye la clave API secreta de mi aplicación.
var crypto = require('crypto') , text = `host=${properties.keyvalues[0].value}&shop=${properties.thing1}×tamp=${properties.thing2}` , key = 'PRIVATE_API_KEY' , hash; var returnValue var hash = crypto.createHmac('sha256', key).update(text).digest('hex'); //var base64 = Buffer.from(hash).toString('base64'); if (hash === shopifyHmac) { returnValue = "true" } else { returnValue = "false" }El problema con el que me encuentro es que el HMAC proporcionado no coincide con la cadena de consulta decodificada, lo que significa que falla la validación.
He jugado con el orden de los parámetros de URL, así como con los parámetros que se incluyen en la cadena de consulta. También intenté codificarlo como formato base64.
¿Alguna idea de dónde me estoy equivocando?