Как создать файл для загрузки подписанного URL с помощью облачной платформы Google - PullRequest
0 голосов
/ 26 июня 2019

Я работаю над проектом, в котором мне нужно предоставить подписанный URL-адрес, по которому сторонняя компания будет загружать файлы в облачное хранилище.

Мой код c # для создания подписанного URL выглядит следующим образом

 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);
         }

Этот код взят из примера c # на веб-сайте документации по облаку Google.

При вставке URL в браузер я получаю 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>

Код, над которым я работаю, взят по ссылке

Кто-нибудь, пожалуйста, сообщите мне, как создать подписанный URL для загрузки файла

Thankyou

...