我们正在使用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之外,所有属性和值都相同)。
但是,驱动器Api资源管理器返回了通过驱动器api创建请求创建的权限的ID。
var permission = new Permission
{
Type = "group",
Role = "fileOrganizer",
EmailAddress = "[email protected]"
};
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重新创建了此调用。
我在此问题的Google问题跟踪器中有created a bug for you。如果要跟踪此问题,可以单击链接页面左上角的星号。
据我所知,如果将权限授予特定用户而不是组,则会发生相同的情况。它似乎也与C#库没有特别关系。
暂时,请不要重复使用最近删除的电子邮件地址。