googleapis" appProperties"节点中的文件未返回字段

时间:2018-05-11 22:41:53

标签: google-drive-api google-api-nodejs-client

我试图让我的文件在gdrive上返回appProperties字段,但目前无法让它正常工作。

"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 :(得分:1)

在我的环境中,我确认可以使用googleapis的appPropertiesfiles.list以及v29.0.0来检索files.get。我想到了你的情况可能性。那么你可以确认以下几点吗?

当我阅读Custom File Properties的文件时,它说如下。

  

使用属性(对所有应用程序可见)和文件上的appProperties(仅限于单个应用程序)字段访问属性

我对此进行了调查。作为示例,它假设{"key1": "value1"}由{strong> client_id_A 写入appPropertiesproperties

  • 对于appProperties,当读取appProperties时,只有与appProperties写入时使用的客户端ID相同的客户端ID才能读取它。
    • 即,当使用从 client_id_B 检索到的访问令牌时,它无法读取 client_id_A 所写的appProperties
  • 对于properties,当读取properties时,可以通过各种客户端ID读取它。
    • 即使使用从 client_id_B 检索到的访问令牌,也可以阅读 client_id_A 撰写的properties

根据这些结果,appPropertiesproperties可分别用作“私人”和“公开”。

使用此功能,您可以再次确认您的情况吗?如果您将使用node.js编写appProperties,则可以使用以下脚本。这样,您可以确认您可以使用相同的客户端ID编写和读取appProperties

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

如果这对你的情况没用,我很抱歉。