与谷歌服务帐户共享一个谷歌驱动器文件夹,但服务帐户无法看到它

时间:2015-08-31 15:04:13

标签: google-drive-api google-api-dotnet-client

编写一个应用程序,用于抓取用户上传的打包zip文件的上传目录,并在Google for Work共享google驱动器文件夹中重新创建in-zip目录结构。

问题:在For Work域中创建的服务帐户无法访问或看到共享文件夹。代码在C#中。我希望我只是错过了一些愚蠢的东西。

详细信息:以域管理员帐户登录。进入google api控制台,启用api,创建服务帐户,授予对该服务帐户电子邮件的访问权限。通过API和服务帐户,在File对象列表中找不到共享文件夹,也无法通过ID上传到该文件夹​​。

使用共享文件夹的in-url文件夹ID调用以下代码段。共享给服务帐户的文件夹不会显示在返回的内容列表中。

// 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;
}

1 个答案:

答案 0 :(得分:0)

嗯,事实证明,问题似乎是由更改域外共享设置引起或加剧的,而不是在共享文件夹之前等待完全传播,以及创建服务帐户。删除所有内容并重做完全相同的步骤后,大约在初始尝试后5天,事情正常。当谷歌说“这可能需要长达24小时”而且它似乎在几分钟内就可以正常工作了,继续将这些东西单独留下并在一两天后再回到它。

::耸肩::谢谢,全部。