box.com api OAuth身份验证

时间:2013-01-30 16:51:53

标签: box-api

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

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

    而且,为什么我必须让服务器参与这个过程?制作JavaScript应用程序的文章是指对令牌的直接请求。那个地方有文件吗?

4 个答案:

答案 0 :(得分:16)

  1. 您在Box
  2. 上注册了您的申请
  3. 注册后,您将在Box网站上收到clientId和clientSecret一次
  4. 您在应用程序的某处硬编码凭据
  5. 首次应用程序需要访问Box API时,应将用户重定向到https://www.box.com/api/oauth2/authorize,并将clientId,clientSecret和redirectURI指定为参数。关于redirectURI见下文。
  6. box.com网站打开。用户在box.com上的网络表单中输入自己的凭据。
  7. 用户允许您的应用程序通过box.com网站上的API访问他的文件
  8. Box使用之前指定的redirectURI将用户重定向回您的应用程序。该请求的一个参数是"代码"。这是一个非常短暂的(30秒)访问代码,只能用于获取真正的访问令牌。
  9. 在接下来的30秒内,您的应用程序应再次调用Box API到下一个URL:https://www.box.com/api/oauth2/token,指定以前获取的代码。如果一切正确,您的应用程序将收到access_token,refresh_token和"到期"值。
  10. 现在,您的应用程序可以向Box API发出请求,每次都指定access_token
  11. access_token以秒数到期,在" expires"中指定领域。它应该是大约3600秒或1小时。每当您的应用程序看到access_token已过期时,它应该使用refresh_token向Box发出另一个请求,并获得新的access_token另外1小时。
  12. refresh_token本身将在14天后到期
  13. 注意:如果您开发桌面应用程序,那么您应该在步骤4中为用户打开浏览器,redirectURI应该类似于http://127.0.0.1:8080/Callback,您应该运行一个小型Web服务器,只是为了捕获重定向代码为在第7步。

答案 1 :(得分:2)

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

因此,无法使用带有Google oauth2 documentation来电和#34;客户端"或"已安装"应用程序,只有" Web服务器应用程序"被允许。 Web服务器应用程序没有秘密泄漏问题,因为只有服务器知道秘密。您可以将访问令牌从服务器传递到客户端上的javascript 如果您希望客户端直接发出api请求,则oauth事务已完成。

答案 2 :(得分:0)

在你的问题中,你并不完全清楚你实际上想要制作什么。

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

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

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

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

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

如果这不能指向正确的方向并且您编写.NET应用程序然后再次发布,我会尝试澄清一点。

答案 3 :(得分:0)

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