Node.js box-无法使用nodeJS box sdk创建新协作

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(

我正在构建一个使用box的应用程序,我想为给定用户在我的文件夹中添加协作

在这方面,我正在做以下工作:

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中工作正常

有人知道为什么这样不行吗?我使用的服务帐户可能有问题吗

收件箱应用程序:

  • 应用程序访问是企业级的
  • 我已选择了所有应用程序范围

当我通过appUserId和有效folderId运行代码时,您的代码似乎运行良好。您得到的错误是什么?

当我通过appUserId和有效folderId运行代码时,您的代码似乎运行良好。您遇到的错误是什么?

尝试运行此命令以查看该文件夹上的协作:

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 get
undefined
-您使用的是相同的
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时,它似乎仍然没有启动。它可能需要作为用户启用,然后重新授权。什么是重新授权?我不确定我是否明白了