Заметки
Почему файл скачивается в браузере, но не через file_get_contents
Браузер и file_get_contents() выполняют разные запросы. Браузер отправляет cookie авторизованного сотрудника, следует своим редиректам и иногда открывает просмотрщик. Серверный скрипт не получает эту сессию автоматически.
Сначала посмотрите HTTP-статус, Content-Type и конечный адрес ответа. Вместо PDF сервер может вернуть страницу входа с кодом 200. Проверка только на непустую строку такой случай пропускает.
Для интеграции используйте способ скачивания, который предусмотрен API конкретного файлового поля или Диска. Не отправляйте access token в произвольный URL просмотрщика: наличие токена не делает любой маршрут REST-методом.
Публичная ссылка Диска — отдельный способ выдачи доступа. Она может решить задачу внешней передачи, но её нельзя считать технической заменой потерянной авторизации для любого внутреннего документа. Различия ссылок разобраны в заметке о поле «Файл».