gpt4 book ai didi

java - Google Cloud 签名网址 +SignatureDoesNotMatch

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:57 25 4
gpt4 key购买 nike

尝试获取用于下载 Google 存储中的文件的签名网址是有问题的。出现 SignatureDoesNotMatch 错误。

private  String signString(GoogleCredential credential, String stringToSign) throws Exception {

// sign data
Signature signer = Signature.getInstance("SHA256withRSA");
signer.initSign(credential.getServiceAccountPrivateKey());
signer.update(stringToSign.getBytes("UTF-8"));
byte[] rawSignature = signer.sign();

return new String(org.apache.commons.codec.binary.Base64.encodeBase64(rawSignature, false), "UTF-8");

}

//Here is the code to get signed url
private getFileUrl(GoogleCredential credential,String bucketName, String filePath) {
String signedParam = signString(credential, "GET\n\n\n"+expiration+"\n"+bucketName+"/"+filePath);

// construct URL
String url = "http://storage.googleapis.com/" + bucketName + "/" + filePath +
"?GoogleAccessId=" + credential.getServiceAccountId() +
"&Expires=" + expiration +
"&Signature=" + URLEncoder.encode(signedParam, "UTF-8");
return url;
}

我在这里遗漏了什么吗?为此苦苦挣扎了一段时间。非常感谢任何帮助。

谢谢。

最佳答案

签名 url 的 GET 路径中的存储桶名称应以“/”开头。这解决了问题。

String signedParam = signString(credential, "GET\n\n\n"+expiration+"\n/"+bucketName+"/"+filePath);

关于java - Google Cloud 签名网址 +SignatureDoesNotMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com