В API Google Диска, как я могу различить несуществующий файл и файл, к которому у пользователя нет доступа?

1

Я интегрируюсь с API файлов Google Диска v3 через интерфейс Javascript. (https://developers.google.com/drive/v3/reference/)

Если я попытаюсь вызвать get на файл, который не существует, он возвращает значение 404. Это здорово.

Однако, если я попытаюсь позвонить, get в файл, к которому у запрашивающего пользователя нет доступа, я также получаю 404. Это не так здорово.

Документация, похоже, говорит, что мы просто должны использовать 404 для обработки как не найденных, так и не разрешенных (см. Примечание о обработке 404): https://developers.google.com/drive/v3/web/handle-errors

Если пользователь переходит непосредственно к рассматриваемому файлу через HTTP, последний будет давать 403.

(Я бы ссылался на конкретные примеры документов, которые возвращают 404 против 403, но пока у меня недостаточно очков репутации).

Довольно ясно, что отсутствие прозрачности происходит только в API.

Ответ API включает URL-адрес переадресации, который является ссылками, подобными приведенным выше, но я бы предпочел сохранить пользователей на моем сайте и не привести их к потенциальному тупику в Google.

Любые предложения для трюков, чтобы иметь возможность отличать их от клиентской стороны JS?

  • 0
    Не смешивай ошибки HTTP, мой друг. 404 всегда будет стандартом для ошибок, когда файл не существует, а не когда пользователь не имеет разрешения на доступ к файлу. 403 в Drive API может означать, что у вас нет разрешения. Если вы не можете показать конкретный пример, ваш случай не оправдан.
Теги:
google-drive-sdk

2 ответа

0

Попробуйте это (я его не тестировал). Я предполагаю, что у вас есть идентификатор, который вы пытаетесь получить.

  1. Сделайте свой файл.get. Если он не работает 404...
  2. Попробуйте сделать безобидное обновление этого идентификатора, например. добавить пользовательское свойство

Я предполагаю, что вызов обновления завершится неудачно 403, если он существует, и 404, если это не так.

0

Исходя из документации, это невозможно. Один потенциальный трюк, если у вас каким-то образом будет доступ к учетной записи администратора, которая будет иметь неограниченный доступ ко всем файлам, заключается в проверке доступа к файлу с этой учетной записью через API. Если это приводит к 200, вы можете знать, что файл существует.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню