以编程方式将文件上传到Box.com的最佳方式

use*_*938 5 upload oauth-2.0 box-api

我已经阅读了整个Box.com开发者api指南并花了几个小时在网上研究这个特定的问题,但我似乎无法找到明确的答案,我不想开始创建一个解决方案,如果我要失败错误的道路.我们有一个生产环境,一旦我们完成文件处理,我们的生产软件系统就会将它们拉上来并将它们保存到本地服务器目录中以便存档.此本地路径无法更改.我的问题是如何以编程方式将这些文件上传到我们的Box.com帐户,以便我们可以在云上存档这些文件?我读到的关于此的所有内容都涉及使用OAuth2来访问我理解的帐户,但它也要求用户登录.由于这是一个不向外部用户公开的内部流程,我希望能够实现自动化,否则它对我们来说是不可行的.我没有问题创建程序以在每次保存新文件时触发所有我需要的是简化Box.com访问.

小智 10

我刚刚完成了同样的问题,发现目前你无法绕过OAuth流程.但是,他们的刷新令牌现在有效期为60天,这应该使任何自定义设置更加坚固.但我仍然认为,必须使用OAuth进行企业设置是一个非常脆弱的实现 - 出于你说的确切原因:某些中间件应用程序不得不依赖OAuth身份验证过程.

我的解决方案

这就是我想出来的.以下是各种API文档和视频中概述的相同步骤:

  1. 使用此网址https://www.box.com/api/oauth2/authorize?response_type=code&client_id=[YOUR_CLIENT_ID]&state=[ box- generated_state_security_token] (访问https://developers.box.com/oauth/ 查找原来的)
  2. 将该URL粘贴到浏览器和GO中
  3. 验证并授予访问权限
  4. 获取生成的URL:http://0.0.0.0/?state =[ box-generated_state_security_token] &code=[ SOME_CODE]并记下"code ="值.
  5. 打开POSTMAN或Fiddler(或其他一些HTTP嗅探器)并输入以下内容:
    • 网址:https://www.box.com/api/oauth2/token
    • 创建URL编码的帖子数据:
      • grant_type = authorization_code
      • client_id = [您的客户ID]
      • client_secret = [你的客户秘密]
      • code = <输入步骤4中的代码>
  6. 发送请求并检索生成的JSON数据:
    {
    "access_token": "[YOUR SHINY NEW ACCESS TOKEN]",
    "expires_in": 4255,
    "restricted_to": [],
    "refresh_token": "[YOUR HELPFUL REFRESH TOKEN]",
    "token_type": "bearer"
    }
    

在我的应用程序中,我以一种格式保存身份验证令牌和刷新令牌,如果出现问题,我可以轻松地将其替换掉.然后,每次调用API时都会检查我的身份验证.如果我收到授权异常,我会以编程方式刷新我的令牌,您可以这样做!使用BoxApi.V2 .NET SDK就是这样:

var authenticator = new TokenProvider(_clientId, _clientSecret);
// calling the 'RefreshAccessToken' method in the SDK
var newAuthToken = authenticator.RefreshAccessToken([YOUR EXISTING REFRESH TOKEN]);
// write the new token back to my data store.
Save(newAuthToken);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助!


小智 0

您是否考虑过为此特定目的创建一个盒子“集成”用户。好像上传必须使用 Box 帐户进行。听起来您正在尝试进行匿名上传。我认为 Box 与大多数服务(包括 stackoverflow)一样不希望匿名上传。

您可以创建一个系统用户。进行 Oauth2 舞蹈并将刷新令牌存储在安全的地方。然后,作为脚本唤醒的第一步,使用刷新令牌并存储新的刷新令牌。然后上传所有文件。