已基于电子邮件地址重用已删除的共享驱动器组权限?

时间:2019-10-22 10:10:46

标签: c# google-drive-api

我们正在使用Google.Apis.Drive.v3 v1.41.1.1734 NuGet程序包,并具有执行以下操作的测试方案:

1. Create a group and a user
2. Add the user to the group
3. Create a Shared Drive and add a group permission with the emailaddress of the created group
4. Confirm that the user has access to the Shared Drive
5. Clean all testdata in Google

第二次运行测试时出现问题。

根据驱动器api设置组权限(列表请求返回该权限)。但是,当我们登录到Google Admin时,转到“共享驱动器”并检查创建的“共享驱动器”的成员,它不会显示组权限。此外,用户页面不会将用户显示为共享驱动器的成员。

当我们执行列表请求以获取共享驱动器的所有权限时,我们看到测试运行2的组权限的ID与组权限的ID完全相同(已创建和删除)在测试运行#1中。

当我们再次运行测试,但更改组的emailaddres以便使用不同的电子邮件地址创建权限时,该权限的ID会有所不同,并且行为均与预期的一样(该组权限在Google Admin和用户页面显示该用户是共享驱动器的成员。

到目前为止我们的结论

使用与以前删除的权限相同的电子邮件地址创建新权限时,将重复使用删除的权限。这会导致问题,并且用户无法访问共享驱动器。

同样值得注意的是,一天中的每个第一次测试运行都按预期进行。也许涉及一些缓存?

我们尝试过的其他事情

我们使用Drive Api Explorer创建了组权限。令人惊讶的是,此权限显示在Google Admin中,并且用户页面将用户显示为共享驱动器的成员。

当我们再次执行列表请求时,将返回看起来完全相同的两个权限(除了id之外,所有属性和值都相同)。

但是,Drive Api资源管理器返回了使用Drive api创建请求创建的权限的ID。

我们的通话示例代码

var permission = new Permission
{
    Type = "group",
    Role = "fileOrganizer",
    EmailAddress = "johndoe@example.com"
};
var sharedDriveId = "0ANZoYzwTXKG7Uk9PVA";

var request = driveService.Permissions.Create(permission, sharedDriveId);
request.UseDomainAdminAccess = true;
request.SupportsAllDrives = true;
request.SendNotificationEmail = false;
request.Fields = "id";

var result = await request.ExecuteAsync();

我们还使用Drive API Explorer权限Create method重新创建了此调用。

1 个答案:

答案 0 :(得分:0)

我在Google问题跟踪器中有created a bug for you与此问题有关。如果要跟踪此问题,可以单击链接页面左上角的星号。

据我所知,如果将权限授予特定用户而不是组,则会发生相同的情况。似乎也与C#库无关。

暂时不要尝试重新使用最近删除的电子邮件地址。