Поле "appProperties" googleapis не возвращается для файлов в узле - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь вернуть поле appProperties с моими файлами на gdrive, но в настоящее время не могу заставить его работать.

"googleapis": "^29.0.0"

Вот мои области и поля:

scopes: [
    "https://www.googleapis.com/auth/drive",
    "https://www.googleapis.com/auth/drive.file",
    "https://www.googleapis.com/auth/drive.metadata.readonly"
  ]

fields = ["id", "name", "mimeType", "parents", "description", "modifiedTime", "appProperties"]

Все остальные свойства возвращаются с использованием drive.files.list без проблем, но оно не возвращает поле appProperties.

 getFilesByQuery: function( queryString , extraFields ){

    var fields = ["id", "name", "mimeType", "parents", "description", "modifiedTime", "appProperties"];
    if( extraFields && extraFields.length )
      fields = fields.concat( extraFields );

    return drive.files.list({
      'pageSize': 200,
      'fields': `nextPageToken, files(${ fields.join(', ') })`,
      'q': queryString
    });
  }

Когда я запрашиваю напрямую через файлы / входить в dev.google API, вот что я получаю для этого файла:

{
 "name": "US",
 "appProperties": {
  "order": "1"
 }
}

Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 13 мая 2018

В моей среде я подтвердил, что appProperties можно получить с помощью files.list и files.get googleapis с v29.0.0.И я подумал о возможности причины вашей ситуации.Можете ли вы подтвердить следующую точку?

Когда я читаю документ Свойства пользовательского файла , он говорит следующее:

Свойства доступны через свойства(видимые для всех приложений) и поля appProperties (только для отдельных приложений) в файлах

Я исследовал это.В качестве примера предполагается, что {"key1": "value1"} было записано в appProperties и properties с помощью client_id_A .

  • Для appProperties, когда читается appProperties, его может прочитать только идентификатор клиента, который совпадает с идентификатором клиента, использованным при записи appProperties.
    • А именно, когда используется токен доступа, полученный из client_id_B , он не может прочитать appProperties, записанный client_id_A .
  • Для properties, когда читается properties, его можно прочитать по различным идентификаторам клиентов.
    • А именно, даже если используется токен доступа, полученный из client_id_B , он может читать properties, записанный client_id_A .

Исходя из этих результатов, appProperties и properties могут использоваться как "Приватный" и "Публичный" соответственно.

С помощью этого вы можете подтвердить свою ситуацию еще раз?Если вы напишите appProperties, используя node.js, вы можете использовать следующий скрипт.Этим вы можете подтвердить, что можете писать и читать appProperties, используя один и тот же идентификатор клиента.

drive.files.update({
  fileId: "### file ID ###",
  resource: {"appProperties": {"key": "value"}},
  fields: 'id,appProperties',
});

Если это не помогло в вашей ситуации, извините.

...