Я интегрируюсь с 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?
Попробуйте это (я его не тестировал). Я предполагаю, что у вас есть идентификатор, который вы пытаетесь получить.
Я предполагаю, что вызов обновления завершится неудачно 403, если он существует, и 404, если это не так.
Исходя из документации, это невозможно. Один потенциальный трюк, если у вас каким-то образом будет доступ к учетной записи администратора, которая будет иметь неограниченный доступ ко всем файлам, заключается в проверке доступа к файлу с этой учетной записью через API. Если это приводит к 200, вы можете знать, что файл существует.