2014-06-16 20 views
2

我们一直在研究一种Web服务(http://www.genomespace.org/),该服务允许实现我们的REST API的计算生物学工具,以读取和写入存储在“The云”。允许读取和写入Google Drive文件到未经身份验证的客户端访问

我们的默认文件存储是common Amazon S3 bucket,但我们现在允许用户装载他们自己的私人文件S3 bucket以及文件Dropbox

我们现在正在努力使类似的功能为Google Drive并已运行到至Google Drive独特的一些问题,我们还没有与S3Dropbox遇到。

  1. 只允许未谷歌认证的不显眼地读取文件的客户的方法是使文件"Public"。我们的优先选择是,一旦用户通过OAuth2授权访问我们的应用程序,用户文件可以保留"Private",Google Drive
    然而,即使用户已经授权我们的网络服务离线访问他们的"Private"文件,我们还没有找到一种方法来生成一个URL,我们的系统授权的客户端可以使用该URL来直接获取文件,而无需客户端也登录到Google。 最接近这个功能的是将文件权限更改为"Anyone with Link",但对于大于20MB的文件,Google坚持要求返回中间网页,警告文件未被扫描过病毒。除了不得不弄乱文件权限之外,这会破坏我们现有的客户端。只有在文件为"Public"且我们使用https://googledrive.com/host/PARENT_FOLDER_ID/FILENAME表单的网址时,非Google客户端才能读取文件而不会受到干扰。

  2. 还没有找到任何方式为非Google-authenticated上传文件到Google Drive的客户端。我们的API允许我们的授权客户使用我们的服务器提供的URL直接将文件PUT到后备文件存储。但是,即使文件夹标记为"Public",客户端也需要Google身份验证凭据才能保存到Google云端硬盘。我们可以通过我们的系统使用中间跳来处理这两个问题(例如,我们的网络服务器会首先从Google Drive下载文件,然后允许客户端获取它),但这样会非常低效,并且希望是不必要的。这些问题已经讨论了多次之前计算器(如herehere,并仔细阅读的答复,但没有看到任何最近的讨论。

的谷歌人指导他们的API用户张贴在计算器的支持,所以我希望能从内部人员看到新的一面

+0

我在问我使用Google Drive API时遇到的问题。很可能,我的问题只能通过扩展现有的API来解决。或者可能有一些我不知道的解决方案或解决方法。我只是不知道。 – MarcoO

+0

这一切都引发了你为什么首先有未经认证的客户的问题?在#1听起来像你的首选是让文件保持私密。这自然需要认证。同样,上传需要*某人*拥有数据,这又需要验证。那么在这里玩什么架构限制,你不能沿着访问令牌发送? –

+0

您可以使用服务帐户。文件将被上传到服务帐户。然后您将能够以编程方式使用服务帐户,然后允许用户再次下载它们。 https://developers.google.com/accounts/docs/OAuth2ServiceAccount – DaImTo

回答

1

一般的答案是:不要通过用户的浏览器发出驱动器请求,因为Insead会从你的服务器上做所有事情,你是一个拥有(刷新)令牌的人用户,所以你应该像用户和驱动器之间的代理一样提出所有请求。下载同样可以下载并返回给用户。只要你我们e每个驱动器的令牌不应该有速率限制/配额问题。

相关问题