【问题标题】:Shared a google drive folder with google service account, but service account can't see it与 google 服务帐号共享了一个 google drive 文件夹,但服务帐号看不到
【发布时间】: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


【解决方案1】:

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

:: 耸耸肩 :: 谢谢大家。

【讨论】:

  • 感谢@ChrisH ...遇到完全相同的问题
猜你喜欢
  • 2018-01-11
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 2021-07-04
相关资源
最近更新 更多