0

过去几年,我们的数据库中有一堆混合的经过身份验证的帐户,其中一些在早期被授予“完全访问权限”,后来更改为仅使用“应用程序文件夹”。

有什么方法可以使用 API 来知道我们拥有的 access_token 是在 App 文件夹中还是在整个帐户中?

我们基本上想将所有帐户切换到应用程序文件夹,但只想更改那些需要它的帐户。我们必须移动文件夹并在数据库中存储默认路径。

浏览了文档后,我看不到任何提供此信息的内容,有什么想法吗?

4

2 回答 2

0

感谢@Greg 为我指明了正确的方向。

因为/sharing/list_folders不返回任何错误,所以我无法区分 Full Dropbox 和 App Folder 访问之间的区别。

为了将来参考,为了解决我的查询,我执行了以下操作:

  • 发送一个 API 请求/sharing/get_folder_metadatashared_folder_id
  • 这将始终返回一个错误(除非您以某种方式设法选择了一个存在的 shared_folder_id!)
  • 如果错误包含响应(将始终为invalid_id),则 access_token 具有完整的 Dropbox 访问权限
  • 如果错误为空,则 access_token 仅具有 App 文件夹访问权限
于 2016-10-13T19:39:05.037 回答
0

Dropbox API 的设计使得权限级别(例如,应用程序文件夹与完整的 Dropbox)对应用程序是透明的,因此没有一种好的/官方的编程方式来检测任何给定访问令牌的权限。不过,我们会认为这是一个功能请求。

也就是说,API 的某些功能只有完整的 Dropbox 应用程序才能访问,因此您可以使用这些功能来隐式检测权限。例如,/2/sharing/list_folders端点只能由完整的 Dropbox 应用使用:

应用程序必须具有完整的 Dropbox 访问权限才能使用此端点。

这可能对您有用,尽管它仍然不是一个很好的解决方案,因为在应用程序文件夹应用程序的情况下,您将收到带有纯文本正文的 400 错误(而不是结构良好的 409 错误),因此您可以t 可靠地分辨出该错误与其他一些 400 错误之间的区别。要解决这个问题,您可以匹配错误消息,但这当然可能会改变:

调用 API 函数“sharing/list_folders”时出错:您的 API 应用程序是“应用程序文件夹”应用程序。不允许访问此 API 函数。

于 2016-10-12T17:39:48.487 回答