【发布时间】:2015-08-31 15:04:12
【问题描述】:
编写一个应用程序,该应用程序将抓取用户上传的打包 zip 文件的上传目录,并在 Google for Work 共享的 google 驱动器文件夹中重新创建 in-zip 目录结构。
问题:在 For Work 域中创建的服务帐户无法访问或查看共享文件夹。代码在 C# 中。我希望我只是错过了一些愚蠢的东西。
详细信息:以域管理员帐户登录。进入 google api 控制台,启用 api,创建一个服务帐户,授予对该服务帐户电子邮件的访问权限。通过 API 和服务帐号,在 File 对象列表中找不到共享文件夹,也无法通过 ID 上传。
使用共享文件夹的in-url文件夹ID调用以下sn-p。与服务帐户共享的文件夹未显示在返回的内容列表中。
// get starting point
string masterParent = "xxxxx"; // pulled from URL after sharing folder
File masterParentFolder = GetGAPIFileById( service, masterParent, false );
示例代码段:
static File GetGAPIFileById( gapi.DriveService service, string id, bool folderOnly ) {
if( null == id ) id = "-1";
File rtn = null;
var lreq = service.Files.List();
lreq.MaxResults = 10000;
if( folderOnly ) {
lreq.Q = "mimeType='application/vnd.google-apps.folder' and trashed=false";
} else {
lreq.Q = "trashed=false";
}
var lres = lreq.Execute();
foreach( File f in lres.Items ) {
Console.WriteLine( "Item: " + f.Title + " // " + f.Id );
if( f.Id.Trim().ToLower() == id.Trim().ToLower() ) {
rtn = f;
break;
}
}
return rtn;
}
【问题讨论】:
-
我应该补充一点,在我的个人 gmail 帐户中执行完全相同的过程并将我个人驱动器中的文件夹共享到我在那里创建的服务帐户可以完美地工作。
标签: google-drive-api google-api-dotnet-client