未为节点中的文件返回 googleapis "appProperties" 字段
googleapis "appProperties" field not being returned for files in node
我正在尝试让 appProperties
字段与我在 gdrive 上的文件一起 returned,但目前无法正常工作。
"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
返回,但不会 return 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 上直接通过 files/get 查询时,这就是我为该文件返回的内容:
{
"name": "US",
"appProperties": {
"order": "1"
}
}
有什么想法吗?
谢谢!
在我的环境中,我确认可以使用带有 v29.0.0 的 googleapis 的 files.list
和 files.get
检索 appProperties
。我考虑了您的情况的原因的可能性。那么您能否确认以下几点?
我看了Custom File Properties的文档,是这样说的
Properties are accessed using the properties (visible to all apps) and appProperties (restricted to single apps) fields on files
我对此进行了调查。作为示例,它假设 {"key1": "value1"}
被 client_id_A.
写入了 appProperties
和 properties
- 对于
appProperties
,读取appProperties
时,只有与写入appProperties
时使用的客户端ID相同的客户端ID才能读取。
- 即,当使用从client_id_B获取的访问令牌时,它无法读取[=69=写入的
appProperties
].
- 对于
properties
,读取properties
时,可以通过各种客户端ID读取。
- 即,即使使用从client_id_B获取的access token,也可以读取[=69写的
properties
=].
根据这些结果,appProperties
和 properties
可以分别用作 "Private" 和 "Public"。
用这个,你能再确认一下你的情况吗?如果你会写appProperties
使用node.js,你可以使用下面的脚本。由此,您可以确认您可以使用相同的客户端 ID 写入和读取 appProperties
。
drive.files.update({
fileId: "### file ID ###",
resource: {"appProperties": {"key": "value"}},
fields: 'id,appProperties',
});
如果这对您的情况没有用,我很抱歉。
我正在尝试让 appProperties
字段与我在 gdrive 上的文件一起 returned,但目前无法正常工作。
"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
返回,但不会 return 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 上直接通过 files/get 查询时,这就是我为该文件返回的内容:
{
"name": "US",
"appProperties": {
"order": "1"
}
}
有什么想法吗?
谢谢!
在我的环境中,我确认可以使用带有 v29.0.0 的 googleapis 的 files.list
和 files.get
检索 appProperties
。我考虑了您的情况的原因的可能性。那么您能否确认以下几点?
我看了Custom File Properties的文档,是这样说的
Properties are accessed using the properties (visible to all apps) and appProperties (restricted to single apps) fields on files
我对此进行了调查。作为示例,它假设 {"key1": "value1"}
被 client_id_A.
appProperties
和 properties
- 对于
appProperties
,读取appProperties
时,只有与写入appProperties
时使用的客户端ID相同的客户端ID才能读取。- 即,当使用从client_id_B获取的访问令牌时,它无法读取[=69=写入的
appProperties
].
- 即,当使用从client_id_B获取的访问令牌时,它无法读取[=69=写入的
- 对于
properties
,读取properties
时,可以通过各种客户端ID读取。- 即,即使使用从client_id_B获取的access token,也可以读取[=69写的
properties
=].
- 即,即使使用从client_id_B获取的access token,也可以读取[=69写的
根据这些结果,appProperties
和 properties
可以分别用作 "Private" 和 "Public"。
用这个,你能再确认一下你的情况吗?如果你会写appProperties
使用node.js,你可以使用下面的脚本。由此,您可以确认您可以使用相同的客户端 ID 写入和读取 appProperties
。
drive.files.update({
fileId: "### file ID ###",
resource: {"appProperties": {"key": "value"}},
fields: 'id,appProperties',
});
如果这对您的情况没有用,我很抱歉。