无法将图像文件添加到新的照片场景 [autodesk-forge] API Reality Capture
Posted
技术标签:
【中文标题】无法将图像文件添加到新的照片场景 [autodesk-forge] API Reality Capture【英文标题】:Unable to add image files to new photoscene [autodesk-forge] API Reality Capture 【发布时间】:2020-10-06 18:36:31 【问题描述】:我在让 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": "" 部分没有为我提供任何错误的线索。
这是我程序中的代码序列:
-
获取forge_access_token,
创建照片场景,然后
将图像文件添加到照片场景中。
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 用户看到过这个?你是怎么解决的?
【问题讨论】:
【参考方案1】:上传所有 JPEG 文件需要多长时间?访问令牌通常设置为在一小时后过期,因此如果图像过多或太大,则令牌可能会在所有内容上传之前过期。
另外,考虑使用 curl
和 -v
标志,以便您还可以看到正在发送的确切请求标头,以确保 $forge_access_token
插值不会发生任何奇怪的事情。
如果以上都不是问题,请通过forge (dot) help (at) autodesk (dot) com
与我们联系 - 尽可能详细地说明您的情况 - 我们会将其转交给工程团队。
【讨论】:
【参考方案2】:问题在于 BASH 如何处理单引号和双引号。如果 $variable 出现在单引号而不是双引号中,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))
通过切换到双引号来修复上述代码后,我现在在上传文件时遇到了一个新问题,我将把它作为一个新问题发布,因为它与上述不同。
【讨论】:
以上是关于无法将图像文件添加到新的照片场景 [autodesk-forge] API Reality Capture的主要内容,如果未能解决你的问题,请参考以下文章