Невозможно добавить файлы изображений в новую фотосцену [autodesk-forge] API Reality Capture - PullRequest
0 голосов
/ 17 июня 2020

У меня возникают проблемы с тем, чтобы Autodesk Forge API принимал мои файлы в фотосцену. Сообщение об ошибке, которое я получаю от вызова API:

{"developerMessage":"Access token provided is invalid or expired.", "moreInfo": "https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/error_handling/", "errorCode": ""}

Эта ошибка сбивает меня с толку, поскольку она возникает сразу после того, как я успешно использовал тот же самый forge_access_token для создания фотосцены, в которую я добавляю эти файлы.

А раздел "" errorCode ":" " не дает мне подсказок о том, что не так.

Вот последовательность кода в моей программе:

  1. Получить forge_access_token,
  2. Создать фотосцену и
  3. Добавить файлы изображений в фотосцену.

1. Я успешно получение access_token с этим кодом:

# Request for a 2-legged OAuth access token
json=`curl -s $FORGE_URL/authentication/v1/authenticate \
    -d client_id=$CLIENT_ID\
    -d client_secret=$CLIENT_SECRET\
    -d grant_type=client_credentials\
    -d scope=data:read+data:write
`
forge_access_token=`echo $json | jq -r .access_token`
echo "forge_access_token: $forge_access_token"

2. Затем я использую возвращенный forge_access_token в следующем коде, чтобы успешно запросить новую photosceneid :

json=`curl -s $FORGE_URL/photo-to-3d/v1/photoscene \
    -X 'POST' \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $forge_access_token" \
    -d "scenename=$scan_id" \
    -d 'scenetype=object' \
    -d 'format=obj,rcm'
`
# echo $json
photosceneid=`echo $json | jq -r .Photoscene.photosceneid`
echo "Created Photoscene: $photosceneid"

3. Но когда я вызываю этот код для добавления файлов изображений в эту новую фотосцену, он не может добавить их:

JPG_FILES=$scan_dir/*.jpg
i=0
for image_file in $JPG_FILES
do
    file_name=`basename $image_file`    
    json=`curl -s $FORGE_URL/photo-to-3d/v1/file \
        -H 'Authorization: Bearer $forge_access_token' \
        -d 'photosceneid=$photosceneid' \
        -d 'type=image' \
        -d 'file[$i]=$image_file' 
    `
    i=$((i+1))

Я не получаю это сообщение об ошибке:

{"developerMessage":"Access token provided is invalid or expired.", "moreInfo": "https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/error_handling/", "errorCode": ""}

Видели ли это другие пользователи Forge Reality Capture API? Как вы это решили?

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Проблема заключалась в том, как BASH обрабатывает одинарные и двойные кавычки. BASH не заменяет значения переменной $, если они встречаются в одинарных кавычках, а не в двойных кавычках.

Следующая перезапись последнего раздела удалена: «Предоставленный токен доступа недействителен или просрочен». ошибка:

JPG_FILES=$scan_dir/*.jpg
i=0
for image_file in $JPG_FILES
do
    file_name=`basename $image_file`    
    json=`curl -s $FORGE_URL/photo-to-3d/v1/file \
        -H "Authorization: Bearer $forge_access_token" \
        -d "photosceneid=$photosceneid" \
        -d 'type=image' \
        -d "file[$i]=$image_file" 
    `
    i=$((i+1))

После исправления вышеуказанного кода путем переключения на двойные кавычки у меня возникла НОВАЯ проблема с загрузкой файлов, которую я опубликую в качестве нового вопроса, поскольку она отличается от приведенной выше.

0 голосов
/ 17 июня 2020

Сколько времени нужно, чтобы загрузить все файлы JPEG? Срок действия токена доступа обычно составляет один час, поэтому, если изображений слишком много или они слишком велики, возможно, что срок действия токена истечет до того, как все будет загружено.

Также рассмотрите возможность использования curl с -v флаг, чтобы вы также видели точные заголовки отправляемых запросов, просто чтобы убедиться, что с интерполяцией $forge_access_token ничего не происходит.

Если это ни одна из вышеперечисленных проблем, пожалуйста, свяжитесь с нам через forge (dot) help (at) autodesk (dot) com - с максимально подробной информацией о вашей ситуации - и мы передадим ее команде инженеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...