谷歌驱动器api v3创建文件夹无声地失败

时间:2017-05-23 03:42:55

标签: javascript google-api google-drive-api gapi google-api-js-client

通过全范围的OAuth成功验证后:

https://www.googleapis.com/auth/drive` 

我根据Creating a folder

中的示例创建了一个文件夹
   var fileMetadata = {
        'name' : name,
        'mimeType' : 'application/vnd.google-apps.folder',
//        'parents': [ parent ]
    };
   gapi.client.drive.files.create({
       resource: fileMetadata,
       fields: 'id'
    }, function(err, file) {
      if(err) {
        // Handle error
        console.log(err);
      } else {
        console.log('Folder Id: ', file.id);
        return file.id;
      }
    });

永远不会调用回调函数,控制台中没有错误。

我怎样才能知道发生了什么?

2 个答案:

答案 0 :(得分:1)

我最终使用了较低级gapi.client.request方法,该方法可靠。

var body= {"name": name, 
           "mimeType": "application/vnd.google-apps.folder",
           "parents": [parent.id]}

gapi.client.request({
  'path': 'https://www.googleapis.com/drive/v3/files/',
  'method': 'POST',
  'body': body
}).then(function(jsonResp,rawResp) {
    console.log(jsonResp)
    if (jsonResp.status==200) {
      callback(jsonResp.result)
    }
})

答案 1 :(得分:0)

函数gapi.client.drive.files.create({...})返回一个Promise,因此不要传递回调函数,而应使用一个.then()块来执行Promise。

var fileMetadata = {
    'name': FILE_NAME,
    'mimeType': FILE_MIME_TYPE,
    // 'parents': [ parentFolderID ]
};

gapi.client.drive.files.create({
    resource: fileMetadata,
    fields: '*'
}).then(function(response) {
    if (response.status === 200) {
        var file = response.result;
        console.log(file);
    }
}).catch(function(error) {
    console.error(error);
);