Node.js box-无法使用nodeJS box sdk创建新协作
我正在构建一个使用box的应用程序,我想为给定用户在我的文件夹中添加协作 在这方面,我正在做以下工作:Node.js box-无法使用nodeJS box sdk创建新协作,node.js,box,Node.js,Box,我正在构建一个使用box的应用程序,我想为给定用户在我的文件夹中添加协作 在这方面,我正在做以下工作: const assignUserToFolder = function(appUserId) { //Get App auth client const boxAdminClient = BoxSdk.getAppAuthClient('enterprise', process.env.BOX_ENTERPRISE_ID); console.log(
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的值是否正确
我还直接使用进行了测试,并且能够为我的文件夹更新和设置正确的角色
但即使我把等价物放在我的节点代码中
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中工作正常
有人知道为什么这样不行吗?我使用的服务帐户可能有问题吗
收件箱应用程序:
- 应用程序访问是企业级的
- 我已选择了所有应用程序范围
boxAdminClient.folders.getCollaborations('xxxxxx', null, function(err, data) {
console.log(data);
data.entries.forEach(function(element) {
console.log(element)
}, this);
})
尝试运行此命令以查看该文件夹上的协作:
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);
});
});
好吧,它最终与版本无关。 这应该有用
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);
});
});
我在was lambda中运行它,我可以看到登录到cloud watch
将用户xxx分配到文件夹xxx
,其中两个值都有效。我也没有任何错误日志。您正在运行哪个版本的box sdk?我运行最新版本1.9.0,我在was lambda中运行它,我可以看到登录到cloud watch将用户xxx分配到文件夹xxx
,其中两个值都有效。我也没有任何错误日志。您正在运行哪个版本的box sdk?我运行的是最新版本1.9.0I getundefined
-您使用的是相同的BoxSdk.getAppAuthClient
?从box应用程序中,我分配了所有应用程序范围。好的,你能试着对你的企业id进行编码,但把它放在“”之间吗?我相信我的企业id和boxAdminClient工作正常,我可以从我的应用程序创建应用程序用户,但我无法在给定的现有文件夹上分配正确的访问级别。你的应用程序是否已作为用户启用?否-我已添加boxAdminClient.asUser(appUserId)在调用方法之前对我的代码进行编码>但没有更好的结果我得到了未定义的
-您使用的是相同的BoxSdk.getAppAuthClient
?从box应用程序中,我分配了所有应用程序范围。好的,你能试着对你的企业id进行编码,但把它放在“”之间吗?我相信我的企业id和boxAdminClient工作正常,我可以从我的应用程序创建应用程序用户,但我无法在给定的现有文件夹上分配正确的访问级别。你的应用程序是否已作为用户启用?否-我已添加boxAdminClient.asUser(appUserId)代码>在调用方法之前修改我的代码,但没有更好的结果谢谢kendomen,我理解为什么它会起作用,但我仍然在努力让它起作用。我直接获取var appUserClient=BoxSdk.getAppAuthClient('user','2442376096')代码>其中它是拥有文件夹的用户的id。我验证了appUserClient是否正确,但当我调用userAPIClient.collaborations.createWithUserID
Method时,它似乎仍然没有启动。它可能需要作为用户启用,然后重新授权。什么是重新授权?我不确定我是否很感谢肯多曼,我理解为什么它会起作用,但我仍然在努力让它起作用。我直接获取var appUserClient=BoxSdk.getAppAuthClient('user','2442376096')代码>其中它是拥有文件夹的用户的id。我验证了appUserClient是否正确,但当我调用userAPIClient.collaborations.createWithUserID
Method时,它似乎仍然没有启动。它可能需要作为用户启用,然后重新授权。什么是重新授权?我不确定我是否明白了