Как преобразовать URL-адреса размещенных изображений KML Google My Maps (/m/*/<id>) в реальные общедоступные URL-адреса IOS

Программируем под IOS
Ответить
Anonymous
 Как преобразовать URL-адреса размещенных изображений KML Google My Maps (/m/*/<id>) в реальные общедоступные URL-адреса

Сообщение Anonymous »

Я создаю мобильное приложение (Ionic + Capacitor + React), которое позволяет пользователям импортировать свои собственные KML-файлы Google My Maps. Каждый
KML часто содержит одну или несколько фотографий.
Проблема в том, что KML хранит ссылки на изображения с использованием таких URL-адресов:
https://mymaps.usercontent.google.com/h ... m7bSerVSBF T73XLYaEUBgFh8rYrMeNnYh95Gpo0RhcV5prxbA3_yOEQCu_zfXDp1h4u0mvRTN0BgqU0p55aUl 8HwR6X9ItoSPrD4ZeOL9QVms_dTbcDM8nDiDhmXWpNvQe0?authuser=0&fife=s16383
Если я попытаюсь загрузить это из своего приложения:
• С помощью fetch(...)
• Или с помощью CapacitorHttp.get(...)
• Или внутри WebView
Изображение

Я всегда получаю:
• HTTP 400 Bad Request
• Тело ответа представляет собой страницу ошибки HTML
• Content-Type: text/html; charset=utf-8
Но вот что самое интересное:
Когда я нажимаю на ту же фотографию в Google My Maps (в Chrome), URL-адрес меняется на другую форму:
https://mymaps.usercontent.google.com/h ... XDq_xI0y7F hSCOm8ki1_BCSGIvKio9AjqsWphsClF3qc2f90tGl_Dia3aLilkG5AXtvPH8QkJaMyHFuaZkSP6dBeE QQ_v4jlEpda6E138tq-FbpqDsbH9Inv_sztT1sjYLjTDbc5Doq?authuser=0&fife=s16383
Этот URL-адрес «m/1/…» ДЕЙСТВИТЕЛЬНО работает:
• Успешно извлекается (200 OK)
• Возвращает байты JPEG
• Работает в браузере в режиме инкогнито
• Файл загружается как «загрузка» (без расширения), но переименование в .jpg работает нормально
❗ Токены совершенно разные
Внутренний URL-адрес KML использует:
/m/*/
В рабочем общедоступном URL-адресе используется:
/m/1/
Два токена (3APLA... и 5AKc...) не связаны каким-либо очевидным образом и представляют собой непрозрачные идентификаторы изображений, размещенных в Google.
Пример фрагмента KML (из экспорта «Моих карт»)

Код: Выделить всё

\
\Example Spot\
\\\
\
\
\https://mymaps.usercontent.google.com/hostedimage/m/*/3APLA8iCN7ag...\
\
\
\
Что я пробовал:
• Замена /m/*/ на /m/1/ → все равно 400 (несоответствие токенов).
• Удаление authuser=0 → все еще 400.
• Изменение размера файла → все еще 400.
• Отправка токена носителя OAuth → игнорируется, 400.
• Использование файлов cookie из WebView → 400.
• Собственный HTTP (arraybuffer) конденсатора → 400.
• Извлечение в обычном браузере без файлов cookie → 400.
Что мне нужно знать:
  • Есть ли ЛЮБОЙ способ программно получить общедоступный URL-адрес «m/1/» из внутреннего URL-адреса «m/*/», найденного в KML?
  • Существует ли какой-либо документированный API Google для получения фотоматериалов «Мои карты» с использованием элемента KML

    Подробнее здесь: https://stackoverflow.com/questions/798 ... eal-public
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»