【问题标题】:Downloading file with service account using signed url in Google Cloud Storage使用 Google Cloud Storage 中的签名 URL 下载带有服务帐户的文件
【发布时间】:2015-10-07 13:03:09
【问题描述】:

我的要求是为驱动器上传的文档生成签名的 URL 将与客户共享,以便他们能够下载 文件形成驱动器,无需任何身份验证。

作为第一次使用驱动 API 的新手,我正在使用 .NET 库来调用驱动 API。如文档中所述,我已经为 Google API 设置了服务帐户。我能够使用服务帐户进行 API 调用并能够上传文件。我参考How to sign url in .net for google cloud storage 来创建签名网址。但在访问提到的 url 后收到以下错误:

 <Error> <Code>InvalidBucketName</Code> <Message>The specified bucket
 is not valid.</Message> </Error>

我不确定 GoogleBucketName 和 GoogleBucketDir。谁能告诉我在哪里可以获得 GoogleBucketName 和 GoogleBucketDir。目前我正在将 GoogleBucketName 设置为我在谷歌开发者控制台 https://console.developers.google.com/ 中创建的项目名称,并将 GoogleBucketDir 设置为空字符串。提前致谢。

【问题讨论】:

    标签: asp.net asp.net-mvc-4 google-cloud-storage google-api-dotnet-client


    【解决方案1】:

    上传文件后,您会收到一个file resource

    文件资源包含一个名为alternatelink的字段

    alternateLink
    string
    用于在相关 Google 中打开文件的链接 编辑器或查看器。

    您可以与其他用户共享此链接,他们将能够在驱动器中打开文件,他们也应该能够从驱动器下载文件。

    还有一个名为downloadUrl 的字段可能会让他们下载它,但我还没有测试过那个人。如果我没记错的话downloadUrl 有时是空的,所以我没有使用它。

    Console.WriteLine("Alternate link: " + item.AlternateLink);  
    

    Google Drive API Link to file Tutorial

    【讨论】:

    • 感谢重播@dalmTo 我知道我们可以使用备用链接来下载资源,但是当您在浏览器中打开链接时,系统会要求用户登录以下载文档,但根据我的要求,我想允许没有任何身份验证的用户,并且我使用服务帐户的原因是存储桶名称缺少一些东西我怎么能找到存储桶名称? :(
    • 不幸的是,除了使用服务帐户下载文件并让他们从您的服务器下载之外,这是您唯一的选择。
    • 尝试将文件设置为公开,然后使用备用链接。我从来没有遇到过强制登录的问题。不过话虽如此,我的大多数用户都有 Google 帐户
    • 我们只能为使用 google storage API 上传的文档创建签名 url,不能为通过 Google Drive API 上传的文档创建签名 url :(
    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 2014-06-15
    • 2019-07-25
    • 2014-01-28
    相关资源
    最近更新 更多