Google Drive Rest API(V3) - 访问自己拥有的私人文件时出错404

时间:2017-09-01 15:57:38

标签: google-api-nodejs-client

我正在尝试使用针对Google API的nodejs客户端版本21.3.0下载(导出)我拥有的Google云端硬盘文件(私有 - 不与任何人共享)。我在Google API控制台中设置了一个项目,并收到了Drive API的API密钥。当我尝试从节点程序访问我的文件时,我收到“找不到文件”错误。如果我将文件公开(On - Public on the web),我可以正常访问它。我还尝试按照here说明为用户服务器到服务器OAuth2设置服务帐户。然后我使用示例中的代码创建JWT令牌并使用它来请求访问令牌。但即使使用该令牌,当文件是私有时,我也会收到“找不到文件”错误。以下是我目前为此功能提供的代码 -

let key = require(#location_of_json_key_file);
let jwtClient = new google.auth.JWT(
    key.client_email,
    null,
    key.private_key,
    ['https://www.googleapis.com/auth/drive'],
    null
);

jwtClient.authorize(function (err, tokens) {
    if (err) {
        console.log(err);
        return;
    }

    console.log(tokens);
    let fileId = #id_of_file_on_google_drive; 
    googleDriveApi.files.export(
        {
            access_token: tokens.access_token, //tried auth: jwtClient as well
            fileId: fileId,
            mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
          //key: <API_access_key> //Tried with API Access Key
        },
        {encoding: null},
        (err, buffer) => {
            if (err) {
                //keep getting the error here - Error: File not found: #id_of_file_on_google_drive
                console.log(`Error occurred while exporting file from Google Drive - ${err}`);

            } else {
                //process the file...   
            }
        }
    );
});

如果该文件归我的帐户所有,我是否应该使用属于同一Google帐户的服务帐户访问该文件,即使该文件是私有的?否则,要以编程方式访问Drive文件,您必须将它们公开,这并不总是可行/可取。

我在这里缺少什么?谢谢你的任何指示。

0 个答案:

没有答案