Знать, предназначен ли access_token для папки приложения или для полного доступа?

#php #dropbox #dropbox-api #dropbox-php

#php #dropbox #dropbox-api #dropbox-php

Вопрос:

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

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

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

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

Комментарии:

1. [Перекрестная ссылка для справки: dropboxforum.com/t5/API-support /… ]

Ответ №1:

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

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

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

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

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

Комментарии:

1. Спасибо @Greg (еще раз!)

2. Поскольку sharing / list_folders не возвращает никаких ошибок, я не смог отличить папку с полным доступом / App. В качестве будущей ссылки я сделал следующее:

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

Ответ №2:

Спасибо @Greg за то, что указал мне правильное направление.

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

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

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