这太奇怪了。我确实将我的服务帐户设置为具有存储对象的读取权限。
发生了什么事?
服务器
snapshot.forEach(function(childSnapshot){
titleArray.push(childSnapshot.val().title);
usernameArray.push(childSnapshot.val().username);
keyArray.push(childSnapshot.key);
var file = bucket.file(childSnapshot.val().image);
var config = {
action: 'read',
expires: Date.now() + 10000,
contentType: 'image/png'
};
file.getSignedUrl(config, function(err, url) {
if (err) {
console.error(err);
return;
}
imageArray.push(url);
if (imageArray.length == 9) {
res.render("home", {keyArray: keyArray, titleArray: titleArray, usernameArray: usernameArray, imageArray: imageArray});
}
});
});
客户端:
$(".homeImage").each(function(i) {
var row = $(this)
row.attr('id', i);
if (i == 4) {
} else {
$("#"+i).css('background-image', "url('" + imageArray[i] + "')");
}
});
响应:
这是非常奇怪的,因为我认为签名的网址应该验证我的服务帐户发送的请求。
答案 0 :(得分:1)
错误消息表示您的请求没有与之关联的任何身份验证。对于签名网址,这意味着未设置GoogleAccessId /签名/过期查询参数。
我调试打印图像阵列服务器端和客户端,以查看它丢失的位置。
修改:在这种情况下,&
似乎在某处替换为&
。