box.com api OAuth身份验证

use*_*102 9 box-api

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

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

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

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

afr*_*ish 16

  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上的Web表单中输入自己的凭据
  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在"expires"字段中指定的秒数到期.它应该是大约3600秒或1小时.每当您的应用程序看到access_token已过期时,它应该使用refresh_token向Box发出另一个请求,并获得新的access_token另外1小时.
  11. refresh_token本身将在14天后到期

注意:如果您开发桌面应用程序,那么您应该在第4步打开浏览器,redirectURI应该是类似的http://127.0.0.1:8080/Callback,您应该运行一个小型Web服务器,只是为了捕获代码的重定向,如步骤7所示.


小智 2

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

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