2015-04-07 132 views
1

Google谷歌大师和云端硬盘API忍者!使用Drive API在多个用户的Google云端硬盘中共享Google文档

我有以下流动的Rails应用程序:

用户提交一个表单
一个模板谷歌文件在用户的云端硬盘
该文件与其他用户共享创建
被添加文件到其他用户的驱动器

一切都很好,直到最后一步,导致这个谦虚的海报无止境的悲伤。在我看来,我的应用程序应该能够拨打drive.parents.insert,其中我通过创建时(通过用户)存储的fileId和其他用户所需文件夹的folder_id。可悲的是,拨打drive.parents.insert(甚至drive.files.get)返回状态404 - 找不到文件。由于其他用户可以访问文档https://docs.google.com/document/d/#{fileId},并且可以使用通过驱动器GUI提供的“添加到我的驱动器”按钮,从“与我共享”选项卡手动将文件添加到他们自己的驱动器中,这是很无趣的。
那么,善良的读者,我的认识差距在哪里?我必须先拨打drive.files.insert或其他一些Drive API方法吗?如果有的话
1)我是否应该使用属于用户或其他用户的新的身份验证令牌来授权我的请求?
2)如果我应该使用drive.files.insert,为现有文档声明media插入部分的正确方法是什么? (media = Google::APIClient::UploadIO...???
我很乐意应要求提供额外的细节更多,但我怀疑的问题是,在我结束概念...
最佳,
-B

编辑:

的创建文档的用户可以获取该文件;创建该文件夹的其他用户可以获取该文件夹;如何使这些目的符合要求,以便用户可以将他的文件(与其他用户共享)添加到其他用户的文件夹,或者其他用户可以将用户的文件(他共享的文件)添加到他的文件夹中。再次感谢您的关注。

+1

没有看到代码,猜测是404指的是文件夹。 “另一位用户”是否与“一位用户”共享了该文件夹? PS。可能值得编辑你的问题到用户A,用户B等,并清楚哪些用户正在看到错误。 – pinoyyid

+0

感谢您的答复pinoy!据我所知,解决我的问题的方法是,范围'https://www.googleapis.com/auth/drive.file'不足以将文档从'与我共享'文件夹移动到'我的驱动器' - 一旦我添加'https://www.googleapis。com/auth/drive'和'https://www.googleapis.com/auth/drive.appdata'到我的oAuth范围,事情就开始落实了。我希望我可以提供一些有用的文档链接,但唉... – user1870776

+0

如果可能的话,如果您可以发布答案,我相信这是一个并不少见的情况。 Drive.file是首选的范围,因此了解其局限性始终有用。 – pinoyyid

回答

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' 
    } 

我发现没有文档的任何地方暗示,这是必需的 - 恰恰相反,其实,作为谷歌文档建议drive.file。业绩奖金指向任何可以将未来读者引导至提及此处的任何帮助文档的人员。 -B

+0

哦,并且Drive API方法调用是按照最初预期的方式调用'drive.parents.insert'。 – user1870776

相关问题