我正在使用 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 密钥,创建一个新密钥,然后重试。