我正在构建我的组织后端系统和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时,它可以正常工作。
感谢任何帮助
答案 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)
如果应用用户是您希望能够访问该文件夹的组的成员,那么您不需要设置协作,用户应该只能访问。