与Google服务帐户共享Google云端硬盘文件夹,但服务帐户看不到它

Chr*_*isH 5 google-drive-api google-api-dotnet-client

编写一个应用程序,该应用程序将抓取用户上传的打包 zip 文件的上传目录,并在 Google for Work 共享 google 云端硬盘文件夹中重新创建 zip 内目录结构。

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

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

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

// get starting point

    string masterParent = "xxxxx"; // pulled from URL after sharing folder
    File masterParentFolder = GetGAPIFileById( service, masterParent, false );
Run Code Online (Sandbox Code Playgroud)

示例片段:

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;
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*isH 3

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

:: 耸肩 :: 谢谢大家。