Я пытаюсь указать Team Drive для просмотра в соответствии с документами здесь: https://developers.google.com/drive/api/v3/reference/changes/watch
teamDriveId | строка | Командный диск, с которого будут возвращены изменения. Если указано, идентификаторы изменений будут отражать Team Drive; используйте объединенный идентификатор Team Drive и измените идентификатор в качестве идентификатора.
(Примечание команды teamDriveId устарело в пользу driveId, но документы не отражают это)
Я читал, что если вы предоставляете идентификатор, то изменения, связанные только с этой папкой (файлом), будут вызывать push-уведомления, но я по-прежнему получаю уведомления о любых изменениях на диске этого пользователя. Я неправильно читаю документы?
Первоначально отправил вопрос в репозиторий клиентской библиотеки DotNet , поскольку я делаю это в C #. Джон Скит предположил, что IncludeItemsFromAllDrives
должно быть false
, что кажется совершенно логичным, и я попробовал это сначала из-за этого. Однако это приводит к следующей ошибке, возвращаемой из конечной точки API:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "includeTeamDriveItemsRequired",
"message": "The includeItemsFromAllDrives parameter must be set to true when driveId is specified or corpora contains drive or allDrives."
}
],
"code": 403,
"message": "The includeItemsFromAllDrives parameter must be set to true when driveId is specified or corpora contains drive or allDrives."
}
}
Я пробовал несколько вариантов следующих свойств, чтобы посмотреть, смогу ли я ограничить его до Team Drive, но безуспешно:
- SupportsTeamDrives
- SupportsAllDrives
- IncludeItemsFromAllDrives
- RestrictToMyDrive
Разъяснение будет очень приветствоваться.
Редактировать:
Код в соответствии с запросом, он на C #, , но проблема, вероятно, заключается в главном API, согласно Джону Скиту :
Channel channel = new Channel()
{
Id = Guid.NewGuid().ToString(),
Type = "web_hook",
Address = [address],
Token = [token], //max 256 chars
Expiration = new DateTimeOffset(DateTime.Now.AddMinutes(10).ToUnixTimeMilliseconds(),
};
var watchRequest = _driveService.Changes.Watch(channel, startPageToken);
//watchRequest.SupportsTeamDrives = true;
watchRequest.SupportsAllDrives = true;
//watchRequest.TeamDriveId = rootFolderId;
//watchRequest.IncludeTeamDriveItems = true;
watchRequest.IncludeItemsFromAllDrives = true;
watchRequest.DriveId = rootFolderId;
watchRequest.RestrictToMyDrive = true;
channel = await watchRequest.ExecuteAsync();
Я пробовал несколько вариантов, как показывает закомментированный код.