Как узнать id файла на гугл диске
У меня есть приложение для Android, в котором мои заметки хранятся в скрытых данных приложения. Я хочу экспортировать свои заметки, поэтому вопрос прост:
Как я могу получить доступ к скрытым данным приложения на Google Диске для определенного приложения?
Действительно, Google не позволяет вам напрямую обращаться к этой скрытой папке данных приложения.
Но если вы можете получить в свои руки идентификатор клиента / секрет клиента / цифровую подпись приложения, которая используется для аутентификации на серверах Google - тогда да, вы можете в основном имитировать приложение и получить доступ к скрытым данным на вашем Google Диске с помощью Drive API. .
Собираем все вместе
И, наконец, результаты -
ПРИМЕЧАНИЕ. Это неофициальное решение для взлома, поэтому у него может быть несколько проблем. Например, токен доступа действует только один час, после чего он не будет обновляться автоматически.
вот что я пытаюсь сделать: учитывая URL-адрес документа Google, я хочу получить идентификатор документа для создания копии на Google Диске. Я знаю, что могу добиться этого с помощью некоторых регулярных выражений или замены URL-адреса, но поскольку есть несколько разных форм для представления одного и того же документа в URL-адресе, я хотел найти общее решение.
В настоящее время это лучшее, что я мог подумать:
проблема в том, что мое решение охватывает только документы и электронные таблицы, которые я хотел бы сделать то же самое с любым загруженным файлом, например:
короче говоря, я хотел чего-то подобного:
кто-нибудь знает, возможно ли это?
любое безопасное решение для извлечения идентификатора файла из URL-адреса файла также подходит для меня.
DriveApp действительно отсутствует getFileByUrl (а также папка, если на то пошло). Вы можете открыть запрос на улучшение на приложения скрипт отслеживания проблем.
но что я делаю на своих скриптах (так как эти openByUrl функции несколько Новые), чтобы получить идентификатор с помощью регулярного выражения. Вроде этого.
это регулярное выражение работает для любого url-адреса google, который я пробовал: url-адрес диска для папок и файлов, таблиц слияния, электронных таблиц, документов, презентаций и т. д. Он просто ищет все, что в строке "похоже" на ключ Google. То есть любая достаточно большая строка, в которой есть только (ключ google) допустимые символы.
кроме того, он работает, даже если он получает идентификатор напрямую, а не URL. Что полезно, когда вы спрашиваете ссылку у пользователя, так как некоторые могут вставить идентификатор напрямую вместо url-адреса, и он все еще работает.
используя функцию ниже, мы можем получить " /d / fileid/", а затем усечь "/d/ "из начала и" / " из конца.
есть еще несколько расширений URL, не охваченных выше, которые могут содержать идентификаторы.
Это получает часть после /d/ и до следующего / , Так URL-адреса документов всегда содержат свои идентификаторы. Если для этого не найдено совпадения, мы просто возвращаем исходный параметр, который предполагается как ID.
мое настольное приложение, написанное на java, пытается загрузить общедоступные файлы с Google Диска. Как я узнал, он может быть реализован с помощью файла webContentLink (Это Для возможность скачивать файлы без авторизации пользователя).
Итак, приведенный ниже код работает с небольшими файлами:
но это не работает на больших файлах, потому что в этом случае файл не может быть загружен непосредственно через webContentLink без подтверждения пользователя с предупреждением Google virus scan. Увидеть пример: ссылка на веб-контент.
Итак, мой вопрос: Как получить содержимое открытого файла с Google Диска без разрешения пользователя?
обновление 8 декабря 2015 года Согласно Поддержка Google С помощью
метод будет отключен 31 августа 2016 года.
Я только что столкнулся с этой проблемой.
на фишка должен относиться к вашей папке Google Диска, как веб-хостинга.
обновление 1 апреля 2015
Google Drive изменился, и есть простой способ прямой ссылки на ваш диск. Я оставил мои предыдущие ответы ниже Для справки, но вот обновленный ответ.
-
создайте общую папку на Google Диске.
все, что вам нужно сделать, это просто получить хоста URL для общедоступной папки на диске. Для этого вы можете загрузить простой HTML-файл и предварительный просмотр это в Google Drive, чтобы найти URL-адрес хоста.
-
создать папку на Google Диске.
забыл добавить. Если вы используете вложенные папки для организации файлов, вы просто используете имя папки, как и ожидалось в URL иерархия.
то, что я хотел сделать
Я создал пользовательский образ Debian с виртуальной коробкой для Vagrant. Я хотел поделиться этим".box " файл с коллегами, чтобы они могли поместить прямую ссылку в свой Vagrantfile.
в конце концов, мне нужна прямая ссылка на сам файл.
проблема с Google Диском
если вы установите права доступа к файлу, чтобы быть публично доступно и создает / генерирует прямую ссылку доступа, используя что-то вроде gdocs2direct инструмент или просто создание ссылки самостоятельно:
вы получите код проверки на основе файлов cookie и запрос" Google не может сканировать этот файл", который не будет работать для таких вещей, как команды wget или конфигурации Vagrantfile.
но если вы используете вышеуказанный метод "хостинг веб-страниц", вы можете обойти это приглашение.
надеюсь, это поможет!
если вы сталкиваетесь с "этот файл не может быть проверен на вирусы" страница intermezzo, загрузка не так проста.
вам по существу нужно сначала загрузить нормальную ссылку для загрузки, которая, однако, перенаправляет вас на страницу "загрузить в любом случае". Вам нужно сохранить куки из этого первого запроса, узнать ссылку, на которую указывает кнопка "Загрузить в любом случае", а затем использовать эту ссылку для загрузки файла, но повторно использовать куки, которые вы получили с первого запрос.
вот вариант bash процесса загрузки с использованием CURL:
Это, кажется, обновляется снова по состоянию на 19 мая 2015 года:
как я заставил его работать:
как и в недавно обновленном ответе jmbertucci, сделайте свою папку общедоступной для всех. Это немного сложнее, чем раньше, вам нужно нажать дополнительно, чтобы изменить папку на "on - Public в интернете."
найдите свою папку UUID, как и раньше-просто зайдите в папку и найдите свой UUID в адресной строке:
Это также работает с общими папками других.
и щелчок правой кнопкой мыши может сохранить прямую ссылку на любой из этих файлов.
Я знаю, что это старый вопрос, но я не мог найти решение этой проблемы после некоторых исследований, поэтому я делюсь тем, что сработало для меня.
использование учетной записи службы может сработать для вас.
затем вы можете использовать любой парсер Json для чтения downloadUrl, fileName и sizeBytes.
вы можете обратиться следуйте за фрагментом, надеюсь, это поможет.
Я бы рассмотрел загрузку из ссылки, очистив страницу, которую вы получите, чтобы захватить ссылку подтверждения, а затем загрузить ее.
Если вы посмотрите на URL-адрес" загрузить в любом случае", у него есть дополнительный confirm параметр запроса с, казалось бы, случайным токеном. Поскольку это случайность. и вы, вероятно, не хотите выяснить, как создать его самостоятельно, выскабливание может быть самым простым способом, не зная ничего о том, как работает сайт.
возможно, Вам понадобится рассмотрим различные сценарии.
Я использовал этот инструмент командной строки для загрузки файлов с Google Диска. Просто следуйте инструкциям в разделе начало работы, и вы должны загрузить файлы с Google Диска в течение нескольких минут.
Если вы не знаете, что это идентификатор файла, проверьте эту статью ссылка на статью
Я просто создать в JavaScript Так что он автоматически захватывает ссылку и загружает и закрывает вкладку с помощью tampermonkey.
аналогично вы можете получить HTML-источник url-адреса и загрузить на java.
Файл находится по известному пути на Google Диске, например:
Если у вас нет идентификатора файла MyFiles, вам придется сделать это за два вызова.
Первое, что мы сделаем, это перечислим все каталоги в корне.
Это можно сделать с помощью параметра Q, как вы уже знаете.
Проходя мимо parents in 'root' and mimeType = 'application/vnd.google-apps.folder' and name ='Myfiles' , я говорю, что ищу папку с именем Myfiles, у которой есть родительская папка root.
Ответ от этого будет выглядеть примерно так
Я знаю идентификатор файла папки с именем Myfiles
Теперь я могу сделать еще один вызов, который я запрашиваю файл в этом идентификаторе каталога с именем test.txt, как это parents in '1R_QjyKyvET838G6loFSRu27C-3ASMJJa' and name = 'test.txt'
Тогда код будет выглядеть примерно так
Это означает, что если древовидная структура глубже, чем в примере, то мне нужно выполнить запрос для каждого уровня в дереве?
Зависит от того, насколько велика ваша система. Если у вас не так много каталогов, просто создайте список для всех каталогов mimeType = 'application/vnd.google-apps.folder', а затем выполните локальное сканирование, чтобы найти тот, который вы ищете. 😉
Резюме
Как сказал @DalmTo, если вы хотите искать файлы в определенной папке, вам нужно иметь этот идентификатор для поиска в нем.
parents in Whether the parent’s collection contains the specified ID.
Это означает, что вы должны сделать два отдельных запроса. Один запрашивает идентификатор вашей папки, а другой ищет файл test.txt в этой папке.
q: parents in "root" and mimeType = "application/vnd.google-apps.folder" and name = "Myfiles"
q: parents in "ID_FOLDER" and mimeType = "text/plain" and name = "test"
Пример:
Если у вас есть только один файл на всем Диске, который соответствует требуемым характеристикам, вы можете сделать это одним запросом:
q: name = "test" and mimeType = "text/plain"
Внимание ! Если вы загрузили файл, Диск мог определить его как: application/octet-stream . Обычно .txt файлы определяются как plain/text , для получения дополнительной информации о типах MIME и API Drive вы можете проверить здесь распространенные типы MIME и здесь конкретные типы Drive.
Альтернатива с использованием скрипта Google Apps
Вот пример использования скрипта Google Apps :
Внимание ! Сценарий Google Apps использует Drive API v2, в этом случае query_term name становится title
Больше информации
Для более глубокого понимания того, как работает Drive API, вы можете обратиться к руководству по поиску файлов :
-
is the query term or field to search upon. specifies the condition for the query term.
- values are the specific values you want to use to filter your search results
Следует помнить при использовании вне клиентской библиотеки:
Note: These examples use the unencoded q parameter, where name = 'hello' is encoded as name+%3d+%27hello%27. Client libraries handle this encoding automatically.
Мне было интересно, возможно ли получить доступ/отобразить файлы, такие как изображения, которые хранятся на Google Диске на общедоступном веб-сайте.
24 ответа
Обходной путь — получить fileId с помощью Google Drive SDK API , а затем использовать этот Url :
Это будет постоянная ссылка на ваш файл на Google Диске (изображение или что-то еще).
Примечание: эта ссылка, похоже, подлежит квотам. Так что не идеально подходит для публичного/массового обмена.
Это работает без использования общей папки. Само изображение должно быть опубликовано как «общедоступное». Идентификатор файла отображается — встроенный в URL-адрес — при совместном использовании файла.
Привет, Руфо, не могли бы вы поделиться информацией о квоте, например, сколько там квоты? Означает ли квота пропускную способность просмотра в месяц? Есть ли ссылка без квоты? Я ищу публичный/массовый обмен.
Изображение доступно всем, у кого есть ссылка? показывает маленькую иконку с 2 людьми в GD? Для меня это работает.
Может ли кто-нибудь сказать мне об ограничении квоты для одного идентификатора изображения? А что может случиться, если предел пересечь? Спасибо!
Вот простая ссылка для просмотра:
Вы можете сделать то же самое для других типов файлов, например. MP3, PDF и т. д.
Этот ответ сработал для меня, когда я пытался разместить / использовать изображение для логотипа моей команды ESPN Fantasy-Football . так что спасибо за это.
ОБНОВЛЕНИЕ. Как было объявлено, Google устарел. в августе 2016 г. Вот финальное обновление от Google с альтернативами.
Да, это возможно. При условии, что вы поместите свои файлы в общую папку, вы можете получить любой файл в папке по этому URL-адресу:
В то время как ваше редактирование было правильным, лучшим резюме редактирования было бы «удалена неработающая ссылка».
1- загрузить ваше изображение
2- щелкните правой кнопкой мыши и выберите «получить ссылку для совместного использования».
3- скопируйте ссылку, которая должна выглядеть так
4-измените open? на uc? и используйте его как
По состоянию на апрель 2013 года и с использованием Chrome/webkit у меня сработало следующее:
- Перетащите этот URL-адрес на новую вкладку. Скопируйте и вставьте URL-адрес и поделитесь им или вставьте его куда угодно.
Обновление:
Еще одно ограничение заключается в том, что файлы, которые можно открыть на диске Google, не будут доступны таким образом.
То есть при нажатии на ссылку "Подробности" URL-адрес Google-диска отображаться не будет.
Чтобы преодолеть это:
- щелкните правой кнопкой мыши нужный файл и выберите «Открыть с помощью> Управление приложениями»:
- Снимите флажки с приложений, связанных с файлами.
- Необязательно: перезагрузите Google Диск.
- Щелкните правой кнопкой мыши файл и выберите «Подробнее».
- Продолжайте, как в шаге № 4
Примечание. Альтернативой описанной выше процедуре является загрузка файла с расширением, которое Google Диск не может открыть или не связано.
Все, что вам нужно сделать, это открыть файл:
Затем зайдите в свой веб-инспектор (для Chrome Cmd-Shift-I или Ctrl-Shift-I в зависимости от вашей ОС) и получите ссылку. Вставьте эту ссылку в свой браузер, и он будет перенаправлен на другую ссылку. Скопируйте новый URL-адрес. Сделанный!
Для чего редирект?
Кажется, что если вы используете первую ссылку, к ней можно получить доступ только после входа в свою учетную запись Google. Не очень полезно для других людей. Вторая, перенаправленная ссылка, однако, не требует входа в систему. Это ее обоснование.
Я удалил исходный файл, показанный в изображениях, но у меня есть еще один рабочий пример .
На самом деле я проверил ссылку на свой пример, которую я разместил в своем редактировании около недели назад, но, похоже, она больше не работает. Похоже, что эти ссылки работают только временно, поэтому не используйте их ни для какой производственной среды.
Если вы хотите просмотреть файл в браузере, это также возможно с помощью метода, аналогичного тому, который предоставляется rufo и Torxed:
С последующими заменами
- domain : замените на домен G Suite вашей компании, например pikachu
- imageID : заменить на идентификатор изображения/идентификатор файла
Обязательным условием здесь является то, что изображение должно быть передано через диск целевой аудитории (либо каждому человеку индивидуально, либо, возможно, всей организации).
Если у вас возникли проблемы с размером визуализируемого изображения, используйте указанные ниже параметры здесь
Со следующими заменами (в дополнение к замене domain и imageID )
- : укажите ширину в пикселях (без фигурных скобок), например 300
- : укажите высоту в пикселях (без фигурных скобок), например 200
Я думаю, что это возможно, но только на короткое время
Затем вы можете программно получить URL-адрес изображения либо с помощью API списка документов Google, либо с помощью API Google Диска (например, file.getDownloadUrl() в Java). Вы также можете легко получить ссылку на изображение вручную, щелкнув правой кнопкой мыши изображение в средстве просмотра изображений Google Диска по умолчанию.
Проблема в том, что эта ссылка имеет ограниченное время жизни, поэтому она будет работать некоторое время, а затем перестанет работать.
По сути, URL-адрес файла изображения, хранящегося на Диске, должен быть доступен без какой-либо аутентификации после того, как он был установлен для общего доступа, но этот URL-адрес в какой-то момент изменится. Мы могли бы найти решение этой проблемы в будущем, например, предоставить постоянный URL-адрес, который будет перенаправлять на эти изменяющиеся URL-адреса, но без обещаний.
Было бы неплохо заранее знать, как долго живет ссылка. Это фиксировано или зависит от других параметров?
По опыту, если я спрошу инженера, какое это значение, он ответит: «Сейчас это XXX, но не говорите им, потому что мы можем изменить его в любое время :)». Я уверен, что вы можете легко поэкспериментировать, чтобы найти это значение;)
В настоящее время публичная ссылка на ресурс, пусть даже с истекающим сроком действия, — это то, что нам нужно, помимо изолированных программных сред приложений, для которых данные уже принадлежат приложению oauth2 без возни со списками управления доступом.
Это проверено на работоспособность по состоянию на 26 апреля 2021 года. Не требуется общая папка или вход в систему. Но общедоступный файл есть.
Некоторые из предыдущих пользователей были близки, но они пропустили шаг здесь или там.
Вот видео, которое показывает все шаги.
(Редактировать 2 декабря 14 г.
Приведенная ниже информация неверна, когда речь идет о новом Google Диске. Для нового Google Диска следуйте этим инструкциям.
Вы можете использовать два варианта:
Вариант 1: вы можете щелкнуть шестеренку в правом верхнем углу и вернуться к старому диску Google. ЕСЛИ вы вернетесь, используйте инструкции после «Завершить редактирование)». .
Вариант 2 или вы можете следовать обходному пути, который я нашел. Если я найду лучший способ, чем этот, я обновлю его, но вот то, что я нашел, что работает.
В примерах, которые я использовал, пример 1 был папкой на моем диске, а пример 2 был папкой внутри первого, поэтому у него есть вся первая ссылка перед второй.
Нам нужен только самый правый раздел после "/".
Отлично, теперь, когда у вас есть эта ссылка, откройте ее на новой странице. Он направит вас к общей папке. Оказавшись там, вы можете либо щелкнуть правой кнопкой мыши любой файл и выбрать «Копировать адрес ссылки», либо щелкнуть любой файл в этой папке, и вы перейдете к размещенному изображению, URL-адрес в верхней части страницы является URL-адресом хостинга.
Вот как вы это делаете. Это довольно раздражает, и лично мне кажется, что намного проще просто вернуться к старому диску Google.
Я постараюсь сделать новое обучающее видео как можно скорее
Сообщите мне, если это не работает для вас, и с какой проблемой вы столкнулись.
Или вы можете просто следовать написанным ниже.
Эти изображения идут с теми, которые перечислены в шагах.
Создайте папку на своем Google Диске, которую вы хотели бы использовать для обмена изображениями.
Выберите эту папку и перейдите к параметрам общего доступа. Измените параметры «У кого есть доступ» с «Определенные люди» на «Для всех в Интернете». Все изображения, размещенные в папке, будут иметь ссылку на хостинг, показанную на шаге 4.
поместите изображение в эту папку.
выберите изображение, которым вы хотите поделиться, и посмотрите в разделе сведений (обычно справа) для раздела с надписью «Хостинг», вы должны найти ссылку, которая начинается с
"googledrive.com/host/(случайные числа и цифры, являющиеся идентификатором этой папки)/(имя файла)"
Используйте эту ссылку, чтобы поделиться своими изображениями. Вы можете использовать эту ссылку, чтобы встроить их в другие веб-сайты.
Ветеа, если брать ссылку из URL картинки, то она не работает, а если брать из поля "Прямая ссылка", то должна работать. Я использовал и тестировал его в нескольких случаях.
Я нашел очень полезный API/url:
- imageId -> идентификатор файла
- width , желаемая ширина (не может быть больше, чем ширина разрешения изображения), должна быть целым числом, чтобы она работала
- height , желаемая высота (не может быть больше, чем высота разрешения изображения), должна быть целым числом, чтобы она работала
Примечание. API/url сохранит соотношение сторон, поэтому он остановится на том измерении, которое будет выполнено первым.
Это единственный формат прямой ссылки без перенаправления (тогда это постоянная ссылка), и он применяется только к файлам, непосредственно видимым на Google Диске (например, изображениям и документам).
На него не влияет ограничение на загрузку, и вы можете использовать его для отображения изображений на веб-сайте.
Например, ссылка для обмена:
Lh4, lh5 и lh6 тоже работают.
В API Google Диска есть опция типа файла. Возможно, вы могли бы проверить, разрешает ли это допустимое изображение. Я бы рассмотрел вариант, при котором, если тип файла дает мне недопустимое изображение, я получаю новый прямой URL-адрес для файла. Я не совсем понял, как это сделать, но, возможно, это путь, чтобы попробовать.
Вы можете сделать это прямо из Диска и Gmail. Вот как:
1. Загрузите изображение на диск Google и установите разрешения для просмотра (может быть общедоступным ИЛИ любым с ссылкой)
Перейдите в Gmail> Написать. Выберите + рядом со значком вложения.
Выберите значок диска (форма треугольника)
Перейдите к своему изображению и щелкните правой кнопкой мыши, скопируйте URL-адрес изображения.
Вставьте в веб-браузер или вставьте на веб-страницы по мере необходимости.
Это только дает вам ссылку на весь документ. В этом нет никакого смысла; у вас уже есть URL-адрес документа, когда вы редактируете или просматриваете его. Ребята, перестаньте публиковать ответы о том, как найти URL-адрес документа! Мы уже знаем его URL.
Для изображений откройте изображение в программе просмотра Google. то есть
Затем просмотрите исходный код> найдите слово «texmex-thumb» и рядом с ним будет ссылка.
1.Измените настройки вашей фотографии на общедоступную.
2. Получите ссылку, которой можно поделиться.
3. Перейдите на этот веб-сайт и создайте прямую ссылку для скачивания.
Сработало у меня!
Вы можете выполнить следующие шаги, чтобы встроить файлы, которые вы хотите на свой сайт.
- Найдите файл PDF на Google Диске
- Предварительный просмотр файла PDF на Google Диске
- Откройте предварительный просмотр Google Диска
- Используйте меню «Дополнительные действия» и выберите элемент «Встроить».
- Скопируйте предоставленный код
- Отредактируйте страницу Сайтов Google, куда вы хотите встроить
- Откройте HTML-редактор
- Вставьте код для встраивания HTML, предоставленный предварительным просмотром Google Диска.
- Используйте кнопку «Обновить» и сохраните страницу.
Решение, предоставленное Niutech, сработало для меня, т.е.
Но есть 2 нерешенных вопроса
Вы не можете иметь 2 файла с одинаковым именем в одной папке на диске, иначе эта ссылка не будет работать.
Google не дал никаких сроков, когда это будет устаревшим? Я планировал интегрировать это со своим веб-сайтом, но не был так уверен после прочтения этого!
Как это работает в Android
- Token - «главный токен», который идентифицирует учетную запись Google и обеспечивает полный доступ к ней.
- app - имя пакета приложения, например com.whatsapp
- client_sig - цифровая подпись приложения (отправляется как SHA1)
- device - Android ID устройства.
- service - области (разрешения), которые приложение хочет иметь
Поэтому, прежде чем мы сможем начать использовать Drive API в названии конкретного приложения, нам нужно знать его подпись и главный токен нашей учетной записи. К счастью, подпись легко извлечь из файла .apk :
Следующее, что нам понадобится, это мастер-токен. Этот специальный токен обычно получается и сохраняется на устройстве при добавлении новой учетной записи Google (например, при первой настройке телефона) путем выполнения аналогичного запроса к тому же URL-адресу. Разница в том, что теперь приложение, запрашивающее разрешения, - это само приложение сервисов Play ( com.google.android.gms ), а Google также предоставляет дополнительные параметры Email и Passwd для входа в систему. Если запрос будет успешным, мы вернем наш главный токен, который затем можно будет добавить в запрос приложения пользователя.
Вы можете прочитать этот блог, чтобы узнать больше. подробная информация о процессе аутентификации.
Читайте также: