gpt4 book ai didi

java - Box Java SDK - 404 在公开可用文档中未找到文件

转载 作者:行者123 更新时间:2023-12-02 09:27:20 25 4
gpt4 key购买 nike

我正在使用 Box SDK 来获取如下访问 token :

val MAX_CACHE_ENTRIES = 100
val accessTokenCache: IAccessTokenCache = new InMemoryLRUAccessTokenCache(MAX_CACHE_ENTRIES)

val boxConfig: BoxConfig = {
// Read Box config file
val stream = getClass.getResourceAsStream( path )
val reader = new InputStreamReader( stream )
BoxConfig.readFrom( reader )
}

val connection: BoxDeveloperEditionAPIConnection = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig, accessTokenCache)

val accessToken = connection.getAccessToken()

然后使用此访问 token 和文件 ID,我发送 POST 来读取文件,如下所示:

val fileId = "FILE ID"
val url = s"https://api.box.com/2.0/files/$fileId/content"
val header = List(Header("Authorization", s"Bearer $token"))
// send request

当我使用此自动生成 token 发送 POST 请求时,我收到 404 File Not Found 错误,但如果我从 Box 开发者控制台手动生成 token ,则相同的代码可以工作,并且我可以检索文件内容。

响应看起来像这样

{
"access_token":"TOKEN",
"expires_in":4195,
"restricted_to":[],
"token_type":"bearer"
}

我使用的访问 token 是否错误?

最佳答案

从表面上看,您在 Box 上使用基于 JWT/OAuth 2 的应用程序,因此当您获取访问 token (BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection) 时,该访问 token 正在引用您的服务帐户。

服务帐户是一个代表您的应用程序的程序化 Box 帐户 - 就所有意图和目的而言,它只是另一个没有 box.com 登录凭据的用户帐户。

我对您收到 404 错误的猜测是,您引用的文件 ID 是存储在其他用户帐户(很可能是您自己的 box.com 帐户)中的文件。由于访问 token 的范围是服务帐户,因此它会尝试在该服务帐户中查找文件 ID,而不是在您的其他帐户中。默认情况下,服务帐户不能只访问公司/企业中其他人拥有的所有文件/文件夹,它只能访问自己的数据,除非它在文件/文件夹上进行协作。

要访问该文件,您需要以拥有该文件的用户身份发出请求。 Here's a guide关于如何生成用户范围内的访问 token ,这应该可以解决问题。

希望有帮助,乔恩

关于java - Box Java SDK - 404 在公开可用文档中未找到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58253705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com