【问题标题】:Retrieve files from cloud public folder从云公用文件夹中检索文件
【发布时间】:2016-06-03 19:27:00
【问题描述】:

我们正在为我们的客户创建 c# 控制台测试版应用程序,他们只需在其中粘贴 Google 驱动器或一个驱动器或下拉框或等的公共文件夹/文件 URL。在后端,我们需要检索文件并处理它...

我只是想知道我们如何在没有任何身份验证提示的情况下检索这些云文件(因为给定的 URL 将是公开的,所以它不应该要求 Id pw)

各位专家有什么帮助吗?

【问题讨论】:

  • 如果 URL 是公开/共享的,为什么还要担心身份验证?
  • Philliph,我们的许多客户都没有云存储帐户。他们只有我们通过电子邮件发送给他们的 URL。我们不希望他们为此过程创建一个帐户,否则许多客户可能不会使用它,因为他们必须创建一个帐户..
  • 再一次,...如果 URL 是公共/共享的,那么他们为什么需要凭据?你是说在谷歌/微软云上没有公共/共享资源这样的东西吗?如果是这种情况,那么您无法在没有凭据的情况下访问此类资源。如果您不希望用户键入凭据,您将不得不在您的应用程序中对它们进行硬编码,并自己处理 HttpClient 层内的回发。
  • 我得到了一些示例代码,其中它首先重定向到身份验证页面 :-( 也用于处理公共/共享 URL。你有一些参考资料 - 我如何硬编码凭据 n 处理回发...?
  • Google drive/one drive/Dropbox/等的任何示例

标签: c# google-drive-api box-api onedrive google-drive-realtime-api


【解决方案1】:

使用 OneDrive,您可以使用 "shares" API 检索共享链接而无需身份验证。

您只需正确编码共享 URL,然后将其传递给 API 端点。编码的细节在上面的页面上,但它只是 URL 安全的 base64 编码。

GET https://api.onedrive.com/shares/{encoded_sharing_url}/root/content

API 将返回文件的内容。

编辑:我弄错了网址。 /shares/ API 返回一个看起来有点像驱动器对象的“共享根”。要访问实际的共享文件,您需要在路径的 /content 部分之前添加 /root。我已经在上面更新了。

【讨论】:

  • Ryan,感谢+1 分享代码 sn-p url。我试过了,不幸的是它给了我一个我无法弄清楚的错误:-|,请你检查一下。感谢您的帮助。
  • 您是否遵循此处的编码指南:dev.onedrive.com/shares/shares.htm#encoding-sharing-urls?否则,如果您可以共享用于构建 URL 的代码,我可以看看出了什么问题。
  • Ryan,我只在这个线程中分享了我的代码...stackoverflow.com/q/37622021/4499378
  • 糟糕,我的答案中的 URL 有误。我已经编辑了我的答案以纠正错误并使用您的代码示例来验证这是否适用于更改。可以试试吗?
  • 嗯...我仍然收到相同的错误(远程服务器返回错误:(400)错误请求)。 Here is my updated code.
猜你喜欢
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2019-08-07
  • 2021-11-03
  • 1970-01-01
  • 2021-12-31
  • 2013-09-12
相关资源
最近更新 更多