box - 无法使用 nodeJS box sdk 创建新的协作
box - cannot create new collaboration using the nodeJS box sdk
我正在构建一个使用 box 的应用程序,我想为给定用户在我的文件夹上添加协作。
查看 box doc 我正在做以下事情 :
const assignUserToFolder = function(appUserId) {
//Get App auth client
const boxAdminClient =
BoxSdk.getAppAuthClient('enterprise', process.env.BOX_ENTERPRISE_ID);
console.log(`assign user ${appUserId} to folder ${process.env.BOX_FOLDER_ID}`);
boxAdminClient.collaborations.createWithUserID(
appUserId,
process.env.BOX_FOLDER_ID,
boxAdminClient.collaborationRoles.EDITOR, (
function (error, boxResponse) {
if (error) {
console.log(`error ${error}`);
}
}));
};
我已验证 box 客户端正确,appUserId 和 folderId 的值正确。
我也直接使用 API 直接进行了测试,我能够为我的文件夹更新和设置正确的角色。
但即使我将等同于我的节点代码
const assignUserToFolderAPI = function(appUserId) {
var requestParams = {
body: {
item: {
id: process.env.BOX_FOLDER_ID,
type: "folder"
},
accessible_by: {
id: appUserId,
type: "user"
},
role: "editor"
}
};
//Get App auth client
const boxAdminClient = BoxSdk.getAppAuthClient('enterprise', process.env.BOX_ENTERPRISE_ID);
return new Promise(function (resolve, reject) {
//Create the collaboration in Box
console.log(`create collaboration for user ${appUserId}`);
boxAdminClient.post('/collaborations', requestParams, boxAdminClient.defaultResponseHandler(function(error, boxResponse) {
if (error) {
reject(error);
console.log(requestParams);
}
resolve(boxResponse);
}));
});
};
我收到以下错误消息
"errorMessage": "Unexpected API Response [404 Not Found] (not_found: \"Not Found\")",
当我查看 requestParams 时,item.id
和 accessible_by.id
都是正确的,并且它在 CLI 中工作得很好。
有谁知道为什么这行不通?可能是我使用的服务帐户有问题吗?
盒子应用中:
- 应用程序访问是企业
- 我选择了所有应用范围
当我 运行 它传递一个 appUserId 和一个有效的 folderId 时,您的代码似乎 运行 没问题。您遇到的错误是什么?
尝试 运行 以查看该文件夹上的协作:
boxAdminClient.folders.getCollaborations('xxxxxx', null, function(err, data) {
console.log(data);
data.entries.forEach(function(element) {
console.log(element)
}, this);
})
好吧,结果跟版本没关系。
这应该有效...
adminAPIClient.enterprise.getUsers({filter_term: FOLDER_OWNER_EMAIL}, function (err, users) {
var owner = users.entries[0];
var userAPIClient = sdk.getAppAuthClient('user', owner.id); // folder owner id
userAPIClient.collaborations.createWithUserID(
APP_USER_ID,
FOLDER_ID,
userAPIClient.collaborationRoles.EDITOR,
function(err, data) {
console.log(err);
});
});
我正在构建一个使用 box 的应用程序,我想为给定用户在我的文件夹上添加协作。
查看 box doc 我正在做以下事情 :
const assignUserToFolder = function(appUserId) {
//Get App auth client
const boxAdminClient =
BoxSdk.getAppAuthClient('enterprise', process.env.BOX_ENTERPRISE_ID);
console.log(`assign user ${appUserId} to folder ${process.env.BOX_FOLDER_ID}`);
boxAdminClient.collaborations.createWithUserID(
appUserId,
process.env.BOX_FOLDER_ID,
boxAdminClient.collaborationRoles.EDITOR, (
function (error, boxResponse) {
if (error) {
console.log(`error ${error}`);
}
}));
};
我已验证 box 客户端正确,appUserId 和 folderId 的值正确。
我也直接使用 API 直接进行了测试,我能够为我的文件夹更新和设置正确的角色。
但即使我将等同于我的节点代码
const assignUserToFolderAPI = function(appUserId) {
var requestParams = {
body: {
item: {
id: process.env.BOX_FOLDER_ID,
type: "folder"
},
accessible_by: {
id: appUserId,
type: "user"
},
role: "editor"
}
};
//Get App auth client
const boxAdminClient = BoxSdk.getAppAuthClient('enterprise', process.env.BOX_ENTERPRISE_ID);
return new Promise(function (resolve, reject) {
//Create the collaboration in Box
console.log(`create collaboration for user ${appUserId}`);
boxAdminClient.post('/collaborations', requestParams, boxAdminClient.defaultResponseHandler(function(error, boxResponse) {
if (error) {
reject(error);
console.log(requestParams);
}
resolve(boxResponse);
}));
});
};
我收到以下错误消息
"errorMessage": "Unexpected API Response [404 Not Found] (not_found: \"Not Found\")",
当我查看 requestParams 时,item.id
和 accessible_by.id
都是正确的,并且它在 CLI 中工作得很好。
有谁知道为什么这行不通?可能是我使用的服务帐户有问题吗?
盒子应用中:
- 应用程序访问是企业
- 我选择了所有应用范围
当我 运行 它传递一个 appUserId 和一个有效的 folderId 时,您的代码似乎 运行 没问题。您遇到的错误是什么?
尝试 运行 以查看该文件夹上的协作:
boxAdminClient.folders.getCollaborations('xxxxxx', null, function(err, data) {
console.log(data);
data.entries.forEach(function(element) {
console.log(element)
}, this);
})
好吧,结果跟版本没关系。 这应该有效...
adminAPIClient.enterprise.getUsers({filter_term: FOLDER_OWNER_EMAIL}, function (err, users) {
var owner = users.entries[0];
var userAPIClient = sdk.getAppAuthClient('user', owner.id); // folder owner id
userAPIClient.collaborations.createWithUserID(
APP_USER_ID,
FOLDER_ID,
userAPIClient.collaborationRoles.EDITOR,
function(err, data) {
console.log(err);
});
});