Box.com - 使用 As-User 标头时,未从新的 BoxFolder(apiConnection, id) 获



我正在使用 As-User 标头来模拟 Box.com 上的用户子集作为服务帐户,以便我可以访问他们的每个文件。

所以我去:

      res.setRequestInterceptor((RequestInterceptor) request -> {
        request.addHeader("As-User", asUser);
        // Returning null means the request will be sent along with our new header.
        return null;
      });

其中asUser是一个用户 ID,它总是类似于 7352356

现在,当我去new BoxFolder(apiConnection, "0");我期待asUser文件的根目录。

但我得到

com.box.sdk.BoxAPIException: The API returned an error code: 401
    at com.box.sdk.BoxAPIResponse.<init>(BoxAPIResponse.java:70) ~[box-java-sdk-2.1.1.jar:?]
    at com.box.sdk.BoxJSONResponse.<init>(BoxJSONResponse.java:30) ~[box-java-sdk-2.1.1.jar:?]
    at com.box.sdk.BoxAPIRequest.trySend(BoxAPIRequest.java:423) ~[box-java-sdk-2.1.1.jar:?]
    at com.box.sdk.BoxAPIRequest.send(BoxAPIRequest.java:209) ~[box-java-sdk-2.1.1.jar:?]
    at com.box.sdk.BoxAPIRequest.send(BoxAPIRequest.java:184) ~[box-java-sdk-2.1.1.jar:?]
    at com.box.sdk.BoxFolder.getInfo(BoxFolder.java:161) ~[box-java-sdk-2.1.1.jar:?]
    at com.box.sdk.BoxFolder.getInfo(BoxFolder.java:23) ~[box-java-sdk-2.1.1.jar:?]

我一定错过了一步是吗?从这个链接,我想我是: 在盒子请求中使用作为用户

好的,

请参阅 https://docs.box.com/reference#as-user-1

要为使用 OAuth2 的应用程序启用此功能,请使用 API 密钥提交支持票证。要为使用 OAuth2 和 JWT 的应用程序启用此功能,请导航到开发人员控制台中的"高级功能"部分,并启用"代表用户执行操作"权限。

所以我猜我们的盒子管理员只是忘记选中该框。

更新:

看起来您必须在更改权限后重新生成 api 密钥。如果不这样做,新权限将不会生效。因此,如果您在访问 box 时遇到 401 错误时遇到此问题......返回 Box 管理控制台,确保权限正确,删除旧的 API 密钥,创建一个新密钥,然后重试。

最新更新