Drive Api v3: изменяет запрос на просмотр TeamDriveId игнорируется? - PullRequest
1 голос
/ 23 апреля 2019

Я пытаюсь указать 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();

Я пробовал несколько вариантов, как показывает закомментированный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...