我正在使用Node.js google-api客户端在谷歌驱动器中正常创建文件,当我创建文件时一切正常,这是一个例子:
drive.files.create({
resource: {
name: 'Another File 5',
mimeType: 'text/plain',
},
media: {
mimeType: 'text/plain',
body: 'It\'s Another Fucking File',
}
}, function(err,result){
if(err) console.log(err)
else console.log(result)
});
现在我想创建一个共享的"shared": true
,它会给我这个错误:
drive.files.create({
resource: {
name: 'Another File 5',
mimeType: 'text/plain',
"shared": true
},
media: {
mimeType: 'text/plain',
body: 'It\'s Another Fucking File',
}
}, function(err,result){
if(err) console.log(err)
else console.log(result)
});
错误:
{ [Error: The resource body includes fields which are not directly writable.]
code: 403,
errors:
[ { domain: 'global',
reason: 'fieldNotWritable',
message: 'The resource body includes fields which are not directly writable.' } ] }
我在Google API资源管理器中尝试了此操作,但也出现了同样的错误。
我是谷歌Api的新手并感谢任何帮助。
答案 0 :(得分:1)
shared
的请求正文中没有create
属性。这已经讨论过
在Drive API文档的Share Files部分中进行了讨论,您需要致电drive.permissions.create
并设置您将与之分享的帐户的相应权限。
我也在API资源管理器上对此进行了测试,但它确实有效。
var fileId = '1sTWaJ_j7PkjzaBWtNc3IzovK5hQf21FbOw9yLeeLPNQ';
drive.permissions.create({
resource: {
'type': 'user',
'role': 'writer',
'emailAddress': 'example@appsrocks.com'
},
fileId: fileId,
fields: 'id',
}, function(err, res) {
if (err) {
// Handle error
console.log(err);
} else {
console.log('Permission ID: ', res.id)
drive.permissions.create({
resource: {
'type': 'domain',
'role': 'reader',
'domain': 'appsrocks.com'
},
fileId: fileId,
fields: 'id',
}, function(err, res) {
if (err) {
// Handle error
console.log(err);
} else {
console.log('Permission ID: ', res.id)
}
});
}
});