我有这样的情况: 有一个Firebase应用程序,该应用程序将Admin SDK与Firebase callable functions和Google API以及Google Drive API一起使用。 有一个文件夹包含应用程序使用Google Drive API Google Drive API上传的9个文件,但这些文件不可见!
当我与新用户共享文件夹时,“信息”面板会显示新权限也已添加到该文件夹内的文件中:
但是,当我尝试查看文件时-它显示黑框,并显示消息文件不可访问...,此后,我看到文件夹中生成了一个新的空文件!
未知用户-新的服务帐户,已删除的用户-已被应用程序使用(并创建了这些文件)的已删除服务帐户
API资源管理器在文件夹中不显示任何文件(参数:“ parents”:“ folder_id”,“ fields:” *”): https://developers.google.com/drive/api/v3/reference/files/create?apix=true
尝试下载文件https://drive.google.com/a/nbmrteam.com/uc?export=download&id=file_id会返回“找不到文件)!
我已经编写了脚本(Google Apps脚本),该脚本循环遍历文件夹中的所有文件,但它也看不到文件:
function getListOfFiles(folderId) {
try {
Logger.log("getListOfFiles()---------------------------");
Logger.log("folderId: " + folderId);
var result = {
msg: "NOT FOUND",
files: null
};
var destFolder = null;
var exists = false;
var fileData = [];
if(folderId) {
destFolder = DriveApp.getFolderById(folderId); //.getFiles()
} else {
destFolder = DriveApp.getRootFolder();
}
if(destFolder) {
//if(!destFolder) return result;
var files = destFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
var data = {
name: file.getName(),
id: file.getId(),
url: file.getUrl(),
isTrashed: file.isTrashed(),
size: file.getSize()
}
fileData.push(data);
Logger.log(file.getName());
result.files = JSON.stringify(fileData);
result.msg = "OK";
}
}
return result;
} catch (err) {
Logger.log(err.toString());
return err.message;
}
}
使用新的服务帐户密钥也无济于事!
此应用程序还使用相同的服务帐户密钥(Admin SDK密钥)从电子表格中获取数据,但现在它无法识别新的访问令牌:
接下来的问题是:如何还原由应用程序创建的文件以及如何“重置”服务帐户-使它们正常工作?