box-api - OAuth2 刷新 token 仅在 14 天内有效

标签 box-api

我刚刚将我们的 Box 代码升级到 OAuth2。

我们已经实现了允许用户在我们的网络服务器和他们的 Box(以及 SkyDrive、Dropbox、Google Drive)帐户之间传输文件的代码。用户的访问和刷新 token 存储在我们的数据库服务器中。

根据 http://developers.box.com/oauth/ , 它说
每个刷新 token 的有效期为 60 天

SkyDrive 和 Drive 都使用 OAuth2,并且没有刷新 token 到期。
是否可以拥有不过期的刷新 token ?

某些应用程序可能不需要刷新 token ,因此您会考虑引入新的 OAuth2 范围,例如

  • box.read
  • box.read_write
  • box.offline_access
  • 最佳答案

    据我了解,Box OAuth2 实现使用可选的刷新 token 轮换方案,每次发布访问 token 时,也会发布新的刷新 token 。参见 oauth spec document 的第 10.4 节.这是一项可选功能,Google 和 Microsoft 不使用该功能,因为它们为 OAuth2 实现发布永久刷新 token (或至少具有足够长的生命周期的刷新 token ,因此它不是真正的问题)。
    以我的拙见,这是 Box 的一个非常不幸的选择。
    您在应用程序中必须做的是,每次请求新的访问 token 时,您还必须保存返回的新刷新 token ,以便下次请求访问 token 时使用新的刷新 token 。这样,您最终会得到过期刷新 token 的唯一情况是,如果用户在 60 天内没有使用他们的 Box 登录名。只要他们积极使用该应用程序,您就会获得新的刷新 token ,并且 60 天的生命周期不是问题。到目前为止一切顺利,但它并不总是这样工作,现在是吗?
    我的问题是,您必须在每个请求上保存刷新 token ,但是如果由于某种原因失败怎么办:网络中断,电池电量不足,磁盘写入异常,您的应用程序被关闭操作系统......然后你将不得不请求用户再次登录,用户会责怪应用程序开发人员。
    如果您有足够多的用户使用您的应用程序,这将会发生。随着时间的推移,可能只有 2-5%,但在我看来,这仍然是一个大问题。
    至少如果刷新 token 是(半)永久性的,您可以重试身份验证过程,直到它完成。然后你知道你已经保存了 token ,你可以继续使用它,也可以用于重试,当上述情况发生时,但轮换方案不是这样。
    我已经在考虑为遇到此问题的用户制作标准支持电子邮件,并链接到此问题。

    关于box-api - OAuth2 刷新 token 仅在 14 天内有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14170857/

    相关文章:

    python - 自定义 url 'this page include script from unauthenticated source' 错误

    oauth-2.0 - Box API OAuth2 : multiple redirect_uris, 持久刷新 token

    ruby-on-rails - 文件上传到 box.com 而不写入文件系统

    java - 使用 Box Android 库 (apiV2) 检查 Box 帐户中的文件/文件夹是否为只读的正确方法是什么?

    search - Box.com 搜索 API 用于检索指定文件夹中的所有文件

    java - 盒子Java SDK : How do I configure HTTPUrlConnection for file upload?

    c# - 使用 Box Windows SDK v2 库在 C# 桌面应用程序中对 Box 进行身份验证

    embed - Box.com 通过 api 嵌入文件/文件夹查看器代码

    http - Box API 周期性返回 202 状态码

    java - 如何使用 Box Java SDK 从图像文件中获取特定大小的缩略图?