【问题标题】:box.com api OAuth authenticationbox.com api OAuth 身份验证
【发布时间】:2013-01-30 16:51:53
【问题描述】:

要么我很密集,要么文档假设我已经知道他们在告诉我什么,但我需要澄清一下为 box.com 应用程序进行身份验证。我真的不明白这是怎么回事。当我读到它时:

  1. 在用户机器上运行的应用程序向 Box 发送请求,包括所有小秘密(如果用户知道如何阅读代码,这些小秘密就不再是秘密了)。
  2. 用户被定向到 Box 登录页面,然后将用户发送到我的服务器(未指定页面),并附上验证码。
  3. 该应用程序以某种方式神奇地从我的服务器获取该代码并向 Box 发送访问令牌请求。
  4. Box 将访问令牌发送到我的服务器?
  5. 该应用再次神奇地从我的服务器获取访问令牌并发送其 APT 请求。

显然我在某个地方迷路了。

而且,为什么我必须让服务器参与该过程?关于制作 JavaScript 应用程序的文章是指对令牌的直接请求。在某处是否有相关文档?

【问题讨论】:

  • 只是为了确认一下,您是否阅读了Box OAuth 2 概述?

标签: box-api


【解决方案1】:
  1. 您在 Box 上注册您的应用程序
  2. 注册后,您会在 Box 网站上收到一次 clientId 和 clientSecret
  3. 您在应用程序的某处硬编码您的凭据
  4. 当您的应用程序第一次需要访问 Box API 时,它应该将用户重定向到 https://www.box.com/api/oauth2/authorize,并指定您的 clientId、clientSecret 和 redirectURI 作为参数。关于 redirectURI 见下文。
  5. box.com 网站打开。用户在 box.com 上的网络表单中输入自己的凭据
  6. 用户允许您的应用程序通过 box.com 网站上的 API 访问他的文件
  7. Box 使用之前指定的 redirectURI 将用户重定向回您的应用程序。此请求的参数之一是“代码”。这是一个非常短暂(30 秒)的访问代码,仅适用于获取真正的访问令牌。
  8. 在接下来的 30 秒内,您的应用程序应再次调用 Box API 到下一个 URL:https://www.box.com/api/oauth2/token,指定之前获得的代码。如果一切正确,您的应用程序会收到一个 access_token、一个 refresh_token 和“expires”值。
  9. 现在您的应用程序可以向 Box API 发出请求,每次都指定 access_token
  10. access_token 过期秒数,在“过期”字段中指定。它应该是大约 3600 秒或 1 小时。每次您的应用程序看到 access_token 已过期时,它应该使用 refresh_token 再次向 Box 发出请求,并在另外 1 小时内获取新的 access_token。
  11. refresh_token 本身在 14 天后到期

注意:如果您开发桌面应用程序,那么您应该在步骤 4 中为用户打开浏览器,redirectURI 应该类似于 http://127.0.0.1:8080/Callback 并且您应该运行一个小型网络服务器,以便使用代码中的代码捕获重定向7.

【讨论】:

    【解决方案2】:

    Box 要求您在应用程序的配置文件中指定一个 redirect_uri,并且它必须是一个 HTTPS URL。

    因此,无法将 box 与 google 的 oauth2 documentation 称为“客户端”或“已安装”的应用程序一起使用,只允许使用“Web 服务器应用程序”。 Web Server 应用程序不存在秘密泄露问题,因为只有服务器知道秘密。之后,您可以将访问令牌从服务器传递到客户端上的 javascript oauth事务已经完成,如果您希望客户端直接发出api请求。

    【讨论】:

      【解决方案3】:

      在您的问题中,您并不完全清楚您实际尝试生产的内容。

      然而,我怀疑您正在尝试编写一个客户端应用程序,该应用程序需要使用他们在 API V2 中提供的 OAUTH2 解决方案进行身份验证。

      如果这是针对 iPhone 的,例如 BOX 有一个很好的例子来说明如何处理它。

      在 WinForm 应用程序中,您需要在 browser1.isnavigating 事件中捕获由框发回的结果代码。

      Windows 控制台应用程序您注册一个自定义 URI 注册以收集代码。

      这些都不需要在 API 开发者应用程序中注册框,因为您会将请求中所需的重定向传递到框。

      如果这没有为您指明正确的方向并且您正在编写一个 .NET 应用程序,请再次发帖,我会尝试进一步澄清。

      【讨论】:

      • Simon,作为话题发起者,我或多或少有同样的误解。我想使用 Box v2 API 开发一个桌面客户端。您能否解释一下,在桌面应用程序中应该将什么用作 redirect_uri?
      【解决方案4】:

      Box 需要某种形式的用户交互,这在我看来是短视的,但请尝试使用模拟用户交互的 Web 服务,然后您可以将令牌保存/传递到您的应用程序以与 Box“云”同步。

      【讨论】:

        猜你喜欢
        • 2014-05-28
        • 2015-02-02
        • 1970-01-01
        • 2014-05-02
        • 2021-09-29
        • 2017-01-13
        • 2018-01-11
        • 1970-01-01
        • 2018-07-10
        相关资源
        最近更新 更多