【发布时间】:2018-08-18 15:30:56
【问题描述】:
我正在尝试通过 API 在我的 Google Drive 上创建一个文件夹。我正在使用 Node,并创建了一个脚本来获取每日报告,并希望通过 API 创建一个文件夹并将这些文件每天上传到它。
为了进行设置,我根据文档的quick start guide 创建了一个项目。我的设置看起来与样板基本相同,但减去了读取 Drive 中文件的功能。但是,在尝试上传 using the example given in the docs 时出现错误:Insufficient Permission。
通过项目界面中的权限,有一堆角色可供选择。目前,我已将我的项目分配为文件夹管理员(以及其他几个角色),应该授予我权限,但我仍然遇到此错误。也许我需要重新生成我的client_secret.json 文件以反映我更新的权限,但我该怎么做呢?我一直在谷歌搜索和浏览界面很长一段时间,但看不到重新生成此文件的方法。
我用来创建文件夹的代码看起来像这样,非常接近文档中给出的样板 - 只是为了看看它是否有效:
const drive = google.drive('v3')
function createFolder (auth) {
console.log('auth:', auth)
const fileMetadata = {
'name': 'daily-report',
'mimeType': 'application/vnd.google-apps.folder',
'parents': ['1P924MEzU_1VoL6OOvWPHSo6vb1u9u0a9'],
}
drive.files.create({
auth: auth,
resource: fileMetadata,
fields: 'id'
}, function (err, file) {
if (err) {
// Handle error
console.error(err.message);
} else {
console.log('Folder Id: ', file.id);
}
});
}
感谢任何帮助。
更新错误:
Token stored to /Users/sg/.credentials/
auth: OAuth2Client {
transporter: DefaultTransporter {},
_certificateCache: null,
_certificateExpiry: null,
_clientId: 'clientID093420402349.apps.googleusercontent.com',
_clientSecret: 'totalsecret',
_redirectUri: 'urn:ietf:wg:oauth:2.0:oob',
_opts: {},
credentials:
{ access_token: 'xxxxxxxxxxxx',
refresh_token: 'xxxxxxxxxxxx',
token_type: 'Bearer',
expiry_date: 1520651774212 } }
(node:76284) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated.
fs.js:106
throw backtrace;
^
Error: EISDIR: illegal operation on a directory, open '/Users/sg/.credentials/'
at rethrow (fs.js:101:21)
at maybeCallback (fs.js:119:42)
at Object.fs.writeFile (fs.js:1260:14)
at storeToken (/Users/sg/R2-DS/src/middleware/aptlist-report-auth.js:104:6)
at /Users/sg/R2-DS/src/middleware/aptlist-report-auth.js:85:7
at /Users/sg/R2-DS/node_modules/google-auth-library/lib/auth/oauth2client.js:95:13
at Request._callback (/Users/sg/R2-DS/node_modules/google-auth-library/lib/transporters.js:113:17)
at Request.self.callback (/Users/sg/R2-DS/node_modules/request/request.js:186:22)
at emitTwo (events.js:126:13)
at Request.emit (events.js:214:7)
【问题讨论】:
标签: node.js google-api google-drive-api