Я хочу написать приложение Flutter, которое работает с Amazon Lex REST API. Amazon предлагает c способ аутентификации Я использовал пакет SigV4 для создания необходимых заголовков
Sigv4Client client = Sigv4Client(
keyId: kAccessKey,
accessKey: kSecretKey,
region: "us-east-1",
serviceName: "lex",
);
final request = client.request(
"https://runtime.lex.us-east-1.amazonaws.com/bot/myBotName/alias/BETA/user/myUserId/text",
method: 'POST',
body: jsonEncode({'inputText': 'hi'}),
);
var response=post(request.url, headers: request.headers, body: request.body);
print(response.body);
но я получаю это сообщение в печати:
{"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."}
Я получаю действительный ответ от почтальона с теми же данными, единственная часть почтальона отличается, а этот пакет - «X-Amz-Content-Sha256» значение и, конечно же, значение подписи (оно меняется каждый раз). «X-Amz-Content-Sha256» значение почтальона:
beaead3198f7da1e70d03ab969765e0821b24fc913697e929e726aeaebf0eba3
«X-Amz-Content-Sha256» мое значение кода:
ee9ef87bd5a357cff93b1d83d1e8a1b47fb3fa2e94251711c6a30250119e6369
Я попытался написать функцию для вычисления проверка подлинности строки, но для меня это было так сложно.