2016-10-12 7 views
0

У нас есть путаница запущенных аутентифицированных учетных записей за последние несколько лет в нашей базе данных, где некоторые из них получили «Полный доступ» на ранней стадии, а затем были изменены только с помощью «Папки приложений».Знаете ли, что access_token для папки приложения или полного доступа?

Есть ли способ использования API, чтобы узнать, есть ли access_token у нас в папке приложения или во всей учетной записи?

Мы в основном хотим переключить все учетные записи в папки приложений, но хотим только изменить те, которые в ней нуждаются. Нам нужно будет перемещать папки и сохранять путь по умолчанию в БД.

Просмотрев документацию, я не вижу ничего, что дает эту информацию, любые мысли?

+0

[Перекрестная ссылка для ссылки: https://www.dropboxforum.com/t5/API-support/Know-if-access-token-is-for-an-App- Folder-or-Full-Access/mp/190351] – Greg

ответ

0

API Dropbox разработан таким образом, что уровень разрешения (например, папка приложения и полный Dropbox) прозрачен для приложения, поэтому нет хорошего/официального программного способа обнаружения разрешения для любого данного токена доступа. Однако мы рассмотрим этот запрос функции.

При этом некоторые функции API доступны только для полных приложений Dropbox, поэтому вы можете использовать их как способ неявного обнаружения разрешения. Например, конечная точка /2/sharing/list_folders доступна только для полноценных приложений для Dropbox:

Приложения должны иметь полный доступ к Dropbox для использования этой конечной точки.

Это может потенциально сработать для вас, хотя оно по-прежнему не является отличным решением, поскольку в случае приложения с папкой приложения вы получите ошибку 400 с телом обычного текста (а не с хорошим структурированным 409 ошибка), поэтому вы не можете достоверно определить разницу между этой и некоторой другой ошибкой 400. Чтобы обойти, что вы могли бы соответствовать против сообщения об ошибке, но это может измениться, конечно:

Ошибки в вызове функции API «обмен/list_folders»: Ваше приложение API является «App Folder» приложение. Невозможно получить доступ к этой функции API.

+0

Спасибо @Greg (снова!) – spirie

+0

Поскольку обмен/list_folders не возвращает никаких ошибок, я не смог отличить разницу между Full Access/App Folder. В качестве будущей ссылки я сделал следующее: – spirie

+0

Я не уверен, что я следую. Вы должны иметь возможность использовать/2/sharing/list_folders для этого в моем ответе. Это приведет к ошибке 400 для приложений с папками приложений и 200 для полного Dropbox. (Я думаю, вы смотрите на ошибки 409, связанные с маршрутом, которые///share/list_folders действительно не имеют.) – Greg

0

Благодаря @Greg для указания меня в правильном направлении.

Поскольку /sharing/list_folders не возвращает никаких ошибок, я не смог отличить разницу между Full Dropbox & Доступ к папке приложения.

Для дальнейшего использования, чтобы решить мой запрос я сделал следующее:

  • Направлено запрос API для /sharing/get_folder_metadata с составил shared_folder_id
  • Это всегда будет возвращать ошибку (если вы как-то не удалось подобрать shared_folder_id, что существует!)
  • Если ошибка содержится ответ (который всегда будет invalid_id), то access_token имеет доступ Full Dropbox
  • Если ошибка была пуста, то доступ _token имеет доступ только для доступа к папке