Box API Node.js 无法上传文件 404 错误

Box API Node.js cant upload file 404 Error

我无法使用 Box 上传文件 API 我的代码:

var sdk = new BoxSDK({
  clientID: BOX_clientID,
  clientSecret: BOX_clientSecret
});





// Create a basic API client
var client = sdk.getBasicClient(BOX_accesstoken);



var fileData = fs.createReadStream('C:\Exports\test.txt')

client.files.uploadFile('123', 'test.txt', fileData, function(err, file) {
if (err){
console.log('err: ' + err);
}
else{
console.log('file uploaded: ' + file);  
}
});


// Get some of that sweet, sweet data!
client.users.get(client.CURRENT_USER_ID, null, function(err, currentUser) {
  if(err) throw err;
  console.log('Hello, ' + currentUser.name + '!');
});

这是输出

您好,UserXYZ!
错误:错误:意外 API 响应 [404 未找到] (not_found: "Not Found")

此外,我真的不明白如何使用 node.js 来刷新我的令牌,文档中的代码对我不起作用。有没有人在使用示例代码来上传文件以及我如何无休止地使用令牌我不想每次都输入新的访问代码。

client.files.upload 的第一个参数必须是有效的 folder_id,所以我相信这就是 [404 Not Found] 出现的原因。所以你可以尝试像'0'这样的东西。

这是一个使用 jwt 的示例,它将负责令牌刷新。

// --------------- jwt --------------------------
var BoxSDK = require('box-node-sdk');
var fs = require('fs');
var path = require('path');

var CLIENT_ID = 'xxxx',
  CLIENT_SECRET = 'xxxx',
  PUBLIC_KEY_ID = 'xxxx',
  PRIVATE_KEY_PATH = 'xxxx',
  PRIVATE_KEY_PASSPHRASE = 'xxxx',
  ENTERPRISE_ID = 'xxxx';

var sdk = new BoxSDK({
    clientID: CLIENT_ID,
    clientSecret: CLIENT_SECRET,
    appAuth: {
      keyID: PUBLIC_KEY_ID,
      privateKey: fs.readFileSync(path.resolve(__dirname, PRIVATE_KEY_PATH)),
      passphrase: PRIVATE_KEY_PASSPHRASE
    }
});

// --------------- your code ---------------------
var client = sdk.getAppAuthClient('enterprise', ENTERPRISE_ID);

var fileData = fs.createReadStream('C:\Exports\test.txt')
client.files.uploadFile('0', 'test.txt', fileData, function(err, file) {
if (err){console.log('err: ' + err);
}
else{console.log('file uploaded: ' + file);  
}
});


// Get some of that sweet, sweet data!
client.users.get(client.CURRENT_USER_ID, null, function(err, currentUser) {
  if(err) throw err;  console.log('Hello, ' + currentUser.name + '!');
});

好的,我明白是怎么回事了。如果您使用的是 Box 生成的密钥,请执行以下操作。

  1. 创建一个名为 config 的目录
  2. 将 Box 的配置文件重命名为 default.json
  3. 然后代码看起来像这样...

    var BoxSDK = require('box-node-sdk'); var config = require('config'); var fs = require('fs'); 变种路径=要求('path');

    var sdk = new BoxSDK({ clientID: config.get('boxAppSettings.clientID'), clientSecret: config.get('boxAppSettings.clientSecret'), 应用认证:{ keyID: config.get('boxAppSettings.appAuth.publicKeyID'), 私钥:config.get('boxAppSettings.appAuth.privateKey'), 密码:config.get('boxAppSettings.appAuth.passphrase'), 到期时间:60, 验证时间戳:假 } });

    var client = sdk.getAppAuthClient('enterprise', "xxxxx");

    var fileData = fs.createReadStream('/users/kdomen/Downloads/test.txt') client.files.uploadFile('0', 'test.txt', fileData, function(err, file) { 如果(错误){ console.log('err: ' + 错误); } 别的 { console.log('file uploaded: ' + 文件);
    } });

    // 获取一些非常棒的数据! client.users.get(client.CURRENT_USER_ID, null, function(err, currentUser) { 如果(错误)抛出错误; console.log('Hello, ' + currentUser.name + '!'); });