BOX:使用AppUser用户令牌将协作添加到文件夹

时间:2016-06-07 08:36:09

标签: c# box-api box

我正在构建我的组织后端系统和BOX之间的集成。

其中一个场景是,当我的组织内发生某些事件时,需要在BOX中创建一个文件夹,并将协作对象添加到该文件夹​​(将组连接到该文件夹​​)。

创建文件夹没有问题,但在尝试创建协作时,我收到以下错误:

Box.V2.Exceptions.BoxException:Bearer realm =“Service”,error =“insufficient_scope”,error_description =“请求需要的权限高于访问令牌提供的权限。”

我正在使用BOX SDK for .Net与BOX进行交互。

我在BOX中创建的应用程序被指定使用AppUser用户类型,我提供了BOX允许的所有范围(除了“管理企业”之外的所有范围)。

失败的代码是(C#):

var privateKey = File.ReadAllText(Settings.JwtPrivateKeyFile);
var boxConfig = new BoxConfig(Settings.ClientID, Settings.ClientSecret, Settings.EnterpriseID, privateKey, Settings.JwtPrivateKeyPassword, Settings.JwtPublicKeyID);
var jwt = BoxJWTAuth(boxConfig);
var token = jwt.AdminToken();
var client = jwt.AdminClient(token);

var addRequest = new BoxCollaborationRequest(){
    Item = new BoxRequestEntity() {
       Id = folderId,
       Type = BoxType.folder
    },
    AccessibleBy = new BoxCollaborationUserRequest(){
       Type = BoxType.@group,
       Id = groupId
    },
    Role = "viewer"
}; 
var api = client.CollaborationsManager;
var task = api.AddCollaborationAsync(addRequest);
task.Wait();

运行此代码但用“Box Applicaiton编辑页面”生成的开发人员令牌替换Admin Token时,它可以正常工作。

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

好的,我与BOX技术团队进行了长时间的讨论,结论是:使用AppUser不是我的方案的正确选择,因为它仅限于它创建的文件夹。没有办法绕过它。

解决方案是: 1.配置应用程序以使用标准用户 2.创建具有管理权限的用户,API将使用该权限在BOX中执行活动。我将此用户命名为“API用户” 3.按照oAuth 2教程生成API .Net应用程序可以使用的访问令牌和刷新令牌,而不是为AppUser生成令牌。可以在https://www.box.com/blog/get-box-access-tokens-in-2-quick-steps/

找到oAuth 2教程

答案 1 :(得分:0)

如果应用用户是您希望能够访问该文件夹的组的成员,那么您不需要设置协作,用户应该只能访问。