知道access_token是用于应用程序文件夹还是完全访问?

时间:2016-10-12 14:56:05

标签: php dropbox dropbox-api dropbox-php

我们在数据库中有一堆经过认证的混合帐户,其中一些帐户已被授予" Full Access"早期和之后它被改为仅使用"应用程序文件夹"。

有没有办法使用API​​来了解我们所拥有的access_token是在App文件夹中,还是在整个帐户中?

我们基本上想要将所有帐户切换到App Folders,但只想改变那些需要它的人。我们必须移动文件夹并在DB中存储默认路径。

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

2 个答案:

答案 0 :(得分:0)

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

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

  

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

这可能对您有用,虽然它仍然不是一个很好的解决方案,因为在应用程序文件夹应用程序的情况下,您将使用纯文本正文获得400错误(而不是结构良好的409错误)所以你不能可靠地分辨出它和其他400错误之间的区别。要解决这个问题,你可以匹配错误信息,但当然可能会改变:

  

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

答案 1 :(得分:0)

感谢@Greg指出我正确的方向。

由于/sharing/list_folders没有返回任何错误,我无法区分Full Dropbox&应用程序文件夹访问。

为了将来参考,为了解决我的问题,我做了以下几点:

  • /sharing/get_folder_metadata发送了一个包含shared_folder_id
  • 的API请求
  • 这将始终返回错误(除非您以某种方式设法选择存在的shared_folder_id!)
  • 如果错误包含响应(始终为invalid_id),则access_token具有Full Dropbox访问权限
  • 如果错误为空,则access_token仅具有应用程序文件夹访问权限