如何使用Google Cloud Platform创建文件上传签名的URL

时间:2019-06-26 19:04:49

标签: c# google-cloud-platform google-cloud-storage

我正在做一个项目,我需要提供一个签名的URL,第三方公司将在该URL上将文件上传到云存储中。

我的用于创建签名URL的C#代码如下

 private void GenerateV4SignedPutUrl(string bucketName, string objectName)
        {
            UrlSigner urlSigner = UrlSigner
                .FromServiceAccountPath(Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"))
                .WithSigningVersion(SigningVersion.V4);

            var contentHeaders = new Dictionary<string, IEnumerable<string>>
            {
                { "Content-Type", new[] { "text/plain" } }
            };

            string url = urlSigner.Sign(bucketName, objectName, TimeSpan.FromHours(1), HttpMethod.Put, contentHeaders);
         }

此代码来自google cloud文档网站上的c#示例。

在浏览器上粘贴网址时,我得到如下的xml

<Error>
<Code>MalformedSecurityHeader</Code>
<Message>Your request has a malformed header.</Message>
<ParameterName>content-type</ParameterName>
<Details>
Header was included in signedheaders, but not in the request.
</Details>
</Error>

更新
我更新了代码以摆脱内容类型, 删除了代码

var contentHeaders = new Dictionary<string, IEnumerable<string>>
            {
                { "Content-Type", new[] { "text/plain" } }
            };

我正在获取xml,如下所示:

<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
</Message>

我正在处理的代码来自link

请有人指导我如何创建签名的网址以上传文件

谢谢

0 个答案:

没有答案