节点谷歌 API 不返回'request'对象



我正在尝试使用节点谷歌api下载一些excel文件。我找到了这个例子,但没有看到相同的结果。

运行类似的代码时,我得到Cannot read property 'pipe' of undefined

var output = fs.createWriteStream("./output/accounts/2016/" + file.name);
var test = drive.files.get({
  fileId: file.gID,
  alt: 'media'
}).pipe(output);

我试图记录get的返回值,只是得到undefined

var output = fs.createWriteStream("./output/accounts/2016/" + file.name);
var test = drive.files.get({
  fileId: file.gID,
  alt: 'media'
});
console.log(test);

我可以使用回调格式获取文件的文本。由于 excel 格式,下面的代码运行并打印出一堆特殊字符。使用 fs.writeFile(...) 保存然后使用 excel 打开不会导致格式正确,我仍然到处都有特殊字符,所有数据都在 A 列中。

var test = drive.files.get({
  fileId: file.gID,
  alt: 'media'
}, function (err, contents) {
    console.log(contents);
});

有没有人遇到过这个问题?

经过更多的研究,我在github上发现了一些与此相关的旧问题。我猜到 OAuth2 的更新破坏了刷新令牌,需要手动刷新令牌才能返回响应对象。

来源: https://github.com/google/google-api-nodejs-client/issues/381

这是最终为我工作的代码:

var jwtClient = new google.auth.JWT(...);
jwtClient.refreshAccessToken(function(err, tokens) {
  var test = drive.files.get({
    fileId: googleFileId,
    alt: 'media'
  }).on('end', function() {
    finished.call();
  }).on('error', function(err) {
    process.exit(err);
  }).pipe(output);
});

相关内容

  • 没有找到相关文章

最新更新