我正在构建我的组织后端系统和 BOX 之间的集成。
其中一个场景是,当我的组织内部发生某些事件时,需要在 BOX 中创建一个文件夹并将协作对象添加到该文件夹(将组连接到该文件夹)。
我创建文件夹没问题,但在尝试创建协作时出现以下错误:
Box.V2.Exceptions.BoxException: Bearer realm="Service", error="insufficient_scope", error_description="请求需要比访问 token 提供的更高的权限。"
我正在使用 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();
当运行此代码但将 Admin Token 替换为从 Box Applicaiton Edit Page 生成的 Developer Token 时,它起作用了。
感谢任何帮助
最佳答案
好的,我与 BOX 技术团队进行了长时间的讨论,得出的结论是:使用 AppUser 不是我的方案的正确选择,因为它仅限于它创建的文件夹。没有办法绕过它。
解决方法是: 1.配置应用程序使用标准用户 2. 创建具有管理权限的用户,API 将使用该用户在 BOX 中执行事件。我将此用户命名为“API 用户” 3. 按照 oAuth 2 教程生成 API .Net 应用程序可以使用的访问 token 和刷新 token ,而不是为 AppUser 生成 token 。 oAuth 2 教程可以在 https://www.box.com/blog/get-box-access-tokens-in-2-quick-steps/ 找到
关于c# - BOX:使用 AppUser 用户 token 将协作添加到文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37674381/