Я проверяю URL между сайтом Shopify и моим приложением.На Shopify в файле .liquid я создаю значение HMAC, используя встроенный в Shopify строковый фильтр hmac_sha256
.Я использую секретный ключ и идентификатор пользователя Twitch, которые я сохранил в теге клиента.
Значение хеша передается в качестве параметра запроса моему приложению, которое использует модуль crypto в файле node.js.чтобы сгенерировать хеш и сравнить его с хешем из URL.
Здесь все становится странно: в файле .liquid, когда я вписываю идентификатор Twitch непосредственно в строковый фильтр, значение хеша генерируется с помощью.Файл Liquid - это то же значение, которое генерирует мое приложение, и все выглядит хорошо:
{{ "12345678" | hmac_sha256: "secret_key" }}
Однако, когда я передаю тот же идентификатор Twitch, что и переменная , встроковый фильтр, хеш-значение, которое генерирует жидкий файл, отличается от первого раза:
{{ twitchId | hmac_sha256: "secret_key" }}
Я уже пытался удалить пробельные символы и символы новой строки из переменной Twitch ID на всякий случайбыли какие-то.Я даже не догадываюсь, в чем может быть проблема.Может быть, переменная (которая является строкой) закодирована иначе, чем когда я ее набираю напрямую?
Для справки, код javascript, проверяющий на совпадение хэши:
// Get query string params:
const { hash, twitchId } = req.query;
console.log('Twitch ID in query: ' + twitchId);
// Verify user
const generatedUserHash = crypto
.createHmac('sha256', userVerifySecret)
.update(twitchId)
.digest('hex');
console.log('Passed hash: ' + hash + ' Generated hash: ' + generatedUserHash);
if (generatedUserHash == hash) {
return true;
} else {
return false;
}