首页 > 解决方案 > Google Cloud Admin SDK (Node.js) 错误:请求的身份验证凭据无效

问题描述

我有这样的情况:有一个使用带有Firebase 可调用函数Google APIGoogle Drive API的 Admin SDK 的 firebase 应用程序。有一个文件夹,其中包含应用程序上传的 9 个文件,使用 Google Drive API Google Drive API但这些文件不可见!

当我与新用户共享文件夹时,信息面板显示新权限也已添加到文件夹内的文件中:

文件夹中的文件列表

但是当我尝试查看文件时 - 它显示了带有文件不可访问的消息的黑框......然后我看到文件夹中生成了一个新的空文件!

未知用户- 新服务帐户和已删除用户- 应用程序使用的已删除服务帐户(并创建了这些文件)

试图查看文件

而是新文件

API Explorer 不显示文件夹中的任何文件(参数:“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 密钥)从电子表格中获取数据,但现在它无法识别新的访问令牌:

错误:请求具有无效的身份验证凭据。
授权错误
错误:请求具有无效的身份验证凭据。

接下来的问题是:如何恢复由应用程序创建的文件以及如何“重置”服务帐户 - 使它们工作?

标签: google-cloud-functionsgoogle-admin-sdk

解决方案


推荐阅读