2

我突然发现大约一周前使用 Box API 工作的代码 (java) 存在问题。我在执行 POST 以创建文件夹时收到 405 Method Not Allowed。我试图解决这个问题,假设它可能与最近的 v2 api 上线有关。但是,回到尝试文档中的示例时,我也看到了问题。例如,文档给出了以下示例...

curl https://api.box.com/2.0/folders -H "Authorization: Bearer MY_V1_AUTH_TOKEN_HERE" -d '{"name":"API Test Create", "parent": {"id": "ID_OF_PARENT_FOLDER_HERE"}}' -X POST

当我测试它时,它什么也没做。没有新文件夹,也没有输出。我尝试过使用不同的文件夹 ID(包括零),并且我尝试过生成新的 V1 身份验证令牌。依然没有。

据我了解,V1 身份验证令牌应该会继续工作更长时间。这不正确吗?还有其他人看到这个问题吗?

这是现有的 java 代码,现在突然开始给出 405。它使用 apache fluent lib ...

String response = Request.Post(new 
StringBuilder(API_BASE_URL).append("/folders/").append(parent_folder_id).toString())
.addHeader("Authorization", API_REQUEST_HEADER)
.bodyString(new StringBuilder("{\"name\":\"")
.append(name).append("\"}").toString(), ContentType.DEFAULT_TEXT)
.execute()
.handleResponse(myResponseHandler);

其中 API_BASE_URL="https://www.box.com/api/2.0" 和 API_REQUEST_HEADER="BoxAuth api_key=MY_APP_API_KEY&auth_token=MY_V1_AUTH_TOKEN"

如果有一个快速,甚至是临时的解决方案来解决这个问题,那就太好了。任何线索表示赞赏。

4

2 回答 2

1

Bearer 标头即

Authorization: Bearer {a bearer token acquired through oauth2}

仅适用于通过OAuth 2 进程检索的不记名令牌。此标头不适用于通过 V1 身份验证过程检索的身份验证令牌。您需要使用带有 V1 身份验证令牌的旧标题样式,即

Authorization: BoxAuth api_key={your api key}&auth_token={your v1 auth token}
于 2012-12-20T18:23:16.647 回答
0

方法改变了Create a New Folder一点;这在您包含的 cURL 示例中有所说明。现在,您不能在请求 URL 的末尾包含父文件夹 ID,并且您必须在请求正文中包含父文件夹 ID:

String response = Request.Post(newStringBuilder(API_BASE_URL)
.append("/folders").toString()
.addHeader("Authorization", API_REQUEST_HEADER)
.bodyString(new StringBuilder("{\"name\":\"").append(name)
.append("\", \"parent\": {\"id\": \"").append(parent_folder_id).append("\"}}")
.toString(), ContentType.DEFAULT_TEXT)
.execute().handleResponse(myResponseHandler);

编辑:虽然我认为方法签名更改将解决您当前的问题,但 seanrose 指出您需要过渡到 OAuth2 以获得长期稳定性。

于 2012-12-20T18:24:27.413 回答