0

我正在尝试将我的 iPad 应用程序与 Box 集成。我遇到了 Box API 的问题,其中一个用户帐户中的文件被返回给其他用户。以下是重现此问题的步骤:

  1. 如本指南中所述,进行授权调用并获取访问令牌。对于登录,我在 Safari 中打开 Box 登录页面。我为重定向 url 指定了一个自定义 url 方案,它会在用户登录后打开我的应用程序。
  2. 获得访问令牌后,调用以列出根文件夹的内容。这成功了。
  3. 从 iPad 上删除应用程序并重建它。
  4. 再次进入登录过程(如第 1 步),但这次使用不同的 Box 帐户登录。这次您将获得一个新的访问代码和 OAuth 令牌。
  5. 如果您使用新令牌进行调用以列出文件,您将收到来自早期帐户的响应。理想情况下,它应该返回当前授权用户的文件。

Box 是仅使用 OAuth 来返回响应还是也使用 cookie?因为在身份验证和接收访问令牌之后,我还看到了来自 Box 的 cookie(使用 验证[[NSHTTPCookieStorage sharedStorage] cookies])。

我尝试通过在启动身份验证流程之前删除所有 Box cookie 来重复上述过程。此外,我没有将 OAuth 令牌保存在磁盘上并检索它。我不会以任何方式保存/缓存响应。

我注意到的另一件事是,在 Safari 中可以有两个 Box 用户同时登录。此外,如果我发出身份验证请求,获取访问令牌并再次发出身份验证请求,它会再次显示登录页面(而不是显示允许/拒绝访问页面)。这是故意的吗?

我正在使用 Box v2 API 和 iOS 5/6

4

1 回答 1

0

经过进一步检查,问题似乎与 Box 服务器缓存响应有关。我使用从 iPad 应用程序创建的两个不同的访问令牌对 curl 进行了快速测试。我调用了两个令牌来获取根文件夹的用户文件。结果是正确的,即我得到了每个帐户的正确文件。

当我在 iPad 应用程序上进行相同的测试时,一个用户的文件被返回给另一个用户。如果我在两次登录之间保持相当大的差距,我得到了正确的文件。

为了永久解决这个问题,我将Cache-Control标题设置no-cache为获取用户文件的请求。

但奇怪的是我必须这样做。Box 需要检查他们的缓存验证逻辑恕我直言。

于 2012-12-26T11:02:08.703 回答