我正在尝试执行我认为会很简单的操作,但是Google API出现了一些问题。我有两个Google凭据,一个来自服务帐户,一个来自访问该应用程序的用户的访问/刷新。
服务帐户具有域范围的委派。
在服务帐户可以访问的团队驱动器上(模板),我有一个文档想复制到用户的“我的驱动器”(根)上。我有以下文件夹的ID:
String userRootId = userCredential.drive().files().get( "root" ).setFields( "id" ).execute().getId();
哪个返回正确的标识符。使用服务帐户复制文件时,我可以整天在Team Drive中进行复制。当我将其复制到用户驱动器时,我得到“找不到文件:$ userRootId”。
我假设这是由于服务帐户无法访问用户的“我的云端硬盘”而造成的。如何使该操作起作用?有人尝试过吗?
答案 0 :(得分:1)
好的,所以我想出了一种适用于我的实现的方法。我具有目标用户驱动器的访问/刷新令牌。如果没有,我不确定如何使它工作。步骤如下:
使用以下方法获取SERVICE ACCOUNT根目录:
String serviceRootId = this.serviceManager.drive().files().get( "root" ).setFields( "id" ).execute().getId();
使用服务帐户复制文件
这一切似乎有些愚蠢,但是鉴于Google云端硬盘当前的限制,我认为这是唯一的方法。我本来希望允许具有域范围委托的服务帐户仅复制内容,但事实并非如此。
如果有更好的方法,我很高兴学习,但是目前看来,这是行得通的。