【问题标题】:Sharing a Google Doc across multiple users' Google Drive using Drive API (v2, Ruby Client, Rails, iOS)使用 Drive API(v2、Ruby Client、Rails、iOS)在多个用户的 Google Drive 之间共享 Google Doc
【发布时间】:2015-04-07 01:33:44
【问题描述】:

您好 Google 专家和 Drive API 忍者!

我有一个具有以下流程的 Rails 应用程序:

用户提交表单
在用户的云端硬盘中创建了一个模板化的 Google 文档
该文档与其他用户共享
该文档已添加到其他用户的驱动器中

直到最后一步,一切都很好,这让这张不起眼的海报充满了悲伤。在我看来,我的应用程序应该能够调用drive.parents.insert,其中我传递了创建时存储的fileId(由用户)和其他用户所需文件夹的folder_id。可悲的是,调用drive.parents.insert(甚至drive.files.get)返回的状态为404 - 找不到文件。这很糟糕,因为其他用户可以通过 https://docs.google.com/document/d/#{fileId} 访问该文档,并且可以使用 Drive GUI 提供的“添加到我的驱动器”按钮从“与我共享”选项卡手动将文件添加到他们自己的驱动器。
那么,亲爱的读者,我的理解差距在哪里?我必须先调用drive.files.insert 或其他Drive API 方法吗?如果是这样
1) 我应该使用属于用户或其他用户的新身份验证令牌来授权我的请求吗?
2) 如果我应该使用drive.files.insert,那么为现有文档声明插入的media 部分的正确方法是什么? (media = Google::APIClient::UploadIO...???)
我很乐意根据要求提供额外的详细信息,尽管我怀疑这个问题是我的概念性问题......
最好的,
-B

编辑:

创建文档的用户可以获取文件;创建文件夹的其他用户可以获取该文件夹;我如何使这些收支平衡,以便用户可以将他的文件(与其他用户共享)添加到其他用户的文件夹中,或者其他用户可以将用户的文件(在其上共享)添加到他的文件夹中。再次感谢您的关注。

【问题讨论】:

  • 没有看到代码,猜测是404指的是文件夹。 “另一个用户”是否与“一个用户”共享文件夹? PS。可能值得将您的问题编辑给用户 A、用户 B 等,并清楚哪个用户看到了错误。
  • 感谢pinoy的回复!据我所知,我的问题的解决方案是范围“googleapis.com/auth/drive.file”不足以将文档从“与我共享”文件夹移动到“我的驱动器”——一旦我添加了“googleapis.com/auth/drive”和'googleapis.com/auth/drive.appdata' 到我的 oAuth 范围内,事情开始落实到位。我希望我可以提供一些文档的有用链接,但是唉...
  • 如果可能的话,如果你能发布一个答案,那就太好了,因为我相信这是一个并不少见的情况。 Drive.file 是首选范围,因此了解其局限性总是有用的。

标签: ruby-on-rails-4 google-drive-api


【解决方案1】:

用适合我的解决方案回答我自己的问题:
据我所知,googleapis.com/auth/drive.file 范围不足以将文档从“与我共享”文件夹移动到“我的云端硬盘”。
也就是说,我将 oAuth 初始化程序从:

config.omniauth :google_oauth2, '...', '...',
  {
    scope: [
      'email',
      'profile',
      'https://www.googleapis.com/auth/plus.me',
      'https://www.googleapis.com/auth/drive.file'
    ],

    access_type: 'offline',
    prompt: 'consent'
  }

到:

config.omniauth :google_oauth2, '...', '...',
  {
    scope: [
      'email',
      'profile',
      'https://www.googleapis.com/auth/plus.me',
      'https://www.googleapis.com/auth/drive',
      'https://www.googleapis.com/auth/drive.appdata',
      'https://www.googleapis.com/auth/drive.file'
    ],

    access_type: 'offline',
    prompt: 'consent'
  }

我在任何地方都没有发现任何文档表明这是必需的——事实上,恰恰相反,正如 Google 文档所建议的 drive.file。任何可以将未来读者引导至提及此内容的任何帮助文档的人都可以获得业力奖励积分。 -B

【讨论】:

  • 哦,Drive API 方法调用是到 drive.parents.insert 最初预期的那样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
相关资源
最近更新 更多