Hello Google guru和Drive API忍者!
我有一个Rails应用程序,其中包含以下流程:
用户提交表格
模板化的Google文档在用户的驱动器中创建
Doc与其他用户共享
该文档已添加到其他用户的云端硬盘
直到最后一步,一切都很好,导致这张简陋的海报没有悲伤的结局。在我看来,我的应用应该能够调用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
,那么为现有doc声明插入的media
部分的正确方法是什么? (media = Google::APIClient::UploadIO...???
)
我很乐意根据要求提供额外的细节,但我怀疑这个问题在概念上是我最终的......
最好,
-B
编辑:
创建文档的用户可以获取该文件;创建该文件夹的其他用户可以获取该文件夹;如何使这些目的满足,以便用户可以将他的文件(与其他用户共享)添加到其他用户的文件夹,或者其他用户可以将用户的文件(他共享的文件)添加到他的文件夹。再次感谢您的关注。
答案 0 :(得分:0)
用适合我的解决方案回答我自己的问题:
据我所知,范围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
一样。 Karmic红利指向任何可以将未来读者引导至任何提及帮助文档的人。 -B