我正在尝试使用签名URL将文件上传到Firebase Cloud Storage,如文档中所述:https://cloud.google.com/storage/docs/access-control/signed-urls#signing-resumable
我正在使用节点。js Admin SDK。
我得到了一个看起来有效的签名URL,但在发送获取会话URI的POST请求时,我得到了以下错误:
<?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message><Details>Anonymous caller does not have storage.objects.create access to projname.appspot.com/filename.ext.</Details></Error>
下面是我用来发出请求的代码:
const admin = require('firebase-admin');
const axios = require('axios').default;
const queryString = require('query-string');
const serverKey = require(<server key path>)
admin.initializeApp({
credential: admin.credential.cert(serverKey),
storageBucket: "projname.appspot.com",
});
async function run() {
const bucket = admin.storage().bucket()
const file = bucket.file(`filename.ext`)
var expires = new Date()
expires.setTime(expires.getTime() + (12 * 60 * 60 * 1000))
const signedUrlArr = await file.getSignedUrl({
action: 'resumable',
expires: expires,
})
const signedUrl = signedUrlArr[0]
const qsArr = signedUrl.split('?')
const params = queryString.parse(qsArr[1]);
try {
const options = {
headers: { "x-goog-resumable": "start" }
};
const response = await axios.post(
qsArr[0],
{ params },
options,
)
console.log(response)
} catch (e) {
console.error(e.response.data)
}
}
run();
我不认为这是缺乏权限,因为错误消息说请求是由匿名用户发出的,事实并非如此。
使用签名的URL,将在URL查询中发送令牌。下面几行代码实质上是剥离令牌的url,因此它是匿名的。
const qsArr = signedUrl.split('?')
...
const response = await axios.post(
qsArr[0],
{ params },
options,
)
将这些行更改为this(或功能相同的内容)可能会解决问题
const qsArr = signedUrl
...
const response = await axios.post(
qsArr,
{ params },
options,
)
至少在我看来是这样的问题。您选择删除签名url的url查询有什么原因吗?
我正在尝试访问Sentinel2公共数据,如下所述:https://cloud.google.com/storage/docs/public-datasets 该文件说:“相比之下,使用云存储API链接访问公共数据不需要身份验证。” 然而,我收到了以下错误:“com.google.cloud.storage.存储异常:匿名调用者storage.objects.get访问谷歌云存储对象。”我正在使用
我正在使用Auth0并尝试通过调用Microsoft标识平台来验证Signature,但我在调用验证方法时收到了下面的错误。还请找到我的代码片段。 代码段: 错误 通用域名格式。auth0.jwt。例外情况。SignatureVerificationException:在com上使用算法SHA256withRSA验证时,令牌的签名无效。auth0.jwt。算法。RSA算法。在com上验证(rsaa
问题内容: 我正在使用Java8和aws-java-sdk1.10.43来获取S3文件的预签名URL。我确实获得了一个链接,但是浏览到该链接会导致此错误: 您提供的授权机制不受支持。请使用AWS4-HMAC-SHA256 要强调的是,我希望生成一个可以通过电子邮件发送并在浏览器中打开的URL,而不是使用Java代码从该URL中读取。 我正在使用下面的代码,并且我相信发现我需要以某种方式将setSS
我正在使用另一个twitter oAuth cURL访问令牌请求的代码/指南,该请求无法测试对API的签名。我还在试着完成第一步 注意:钥匙只是随机的,它们不是真的:) 当我尝试在没有oauth\u回调的情况下发出请求时,我从api得到了一个有效的响应 https://api.twitter.com/oauth/request_token?oauth_consumer_key=nHb2kSQ2CD
我有一个默认ACL设置为private的bucket。我想生成预签名的url,并将其分发给用户,以便他们可以上传文件,上传后文件需要公开访问。 我可以生成预签名的url并上传文件,但文件始终保持私有。如果我在创建签名url时将ACL设置为“public-read”,那么getSignedUrl()正在生成签名url,但对该签名url的PUT请求会拒绝访问。 bucket可以包含私有或公共可访问的文
我试图使用S3预签名的PUT url执行文档上传。我使用java AWSSDK(GeneratePresignedUrlRequest.java)生成url。此url生成代码位于AWS API网关后面的lambda函数中。 然而,当我在Postman中复制生成的url时,我遇到了以下错误 生成的url是“https:// 关于在生成url时需要更正的内容,有什么建议吗?