我正在尝试在亚马逊机械土耳其人上创造一个Hit。我目前正在使用Meteor,因此我没有可以使用的SDK(我知道)。
为了创建点击,我使用以下代码:
Mturk.createHit = function(jobAttributes) {
var operation = "CreateHIT";
var service = "AWSMechanicalTurkRequester";
var timestamp = moment().toISOString();
var encoded = CryptoJS.HmacSHA256(service + operation + timestamp, process.env.SECRET_ACCESS_KEY).toString();
var hitResponse = Meteor.http.get(
"https://mechanicalturk.sandbox.amazonaws.com",
{
params: {
Service: service,
AWSAccessKeyId: process.env.ACCESS_KEY_ID,
Version: "2013-11-15",
Operation: operation,
Signature: encoded,
Timestamp: timestamp,
Title: 'Survey',
Description: 'Survey Description',
Reward: {
Amount: 5,
CurrencyCode: 'USD'
}
}
}
);
console.log(hitResponse);
}
每次提交时,都会收到以下错误:
AWS.BadClaimsSupplied指定的声明无效。基于 您的请求,您的签名应使用以下内容生成 string:AWSMechanicalTurkRequesterCreateHITs2014-11-13T05:41:31.357Z。 检查以确保您的系统时钟和时区不正确。 我们当前的系统时间:2014-11-13T05:41:31Z。
我认为错误来自于不正确地创建我的签名,但我不确定如何继续。我尝试过使用base64编码,但这对我来说也没有用。有什么想法吗?