【问题标题】:PUT file data to a Autodesk API with Python Requests使用 Python 请求将文件数据放入 Autodesk API
【发布时间】:2018-03-23 18:41:00
【问题描述】:

我正在遵循here 描述的过程,但在第 4 步被403 阻止。我有一个带有data:writedata:create 作用域的令牌specified in the docs(以及需要这些作用域的其他API 方法) ) 但我无法获得成功的响应,我认为这取决于我如何发送文件数据。我的代码如下所示:

url = '{}oss/v2/buckets/{}/objects/{}'.format(self.DOMAIN, bucket_id, object_name)
with open(file_path, 'rb') as f:
    file_content = f.read()
response = self.session.put(url, data=file_content, headers={
    'content-type': 'application/octet-stream'
}

身份验证令牌已包含在会话的标头中。以下是上传过程的日志:

INFO Creating storage for README.md file in Test Project project, folder urn:adsk.wipprod:fs.folder:co.XXXXXXXXXXXXXXXX
INFO Storage success, start PUT file to https://developer.api.autodesk.com/oss/v2/buckets/:wip.dm.prod/objects/eb0e0379-9958-45b5-8bb0-5f4111b7a037.md
WARNING Upload failed, status 403: {"developerMessage":"ACM check failed, user or calling service does not have access to perform this operation","userMessage":"","errorCode":"AUTH-012","more info":"http://developer.api.autodesk.com/documentation/v1/errors/AUTH-012"}

【问题讨论】:

  • 很难根据如此简单的描述来判断...你能显示 bucket_id 和 objet_name 吗?他们是正确的吗?您只能将单个资源上传到在步骤 3 中创建的给定存储。此外,错误响应应包含元数据以及可能提供提示的 http 代码
  • @PhilippeLeefsma 是的,信息正确,存储桶和对象信息在上一步中正常工作。元数据只是告诉我我有一个权限问题,这似乎具有误导性,因为前面的步骤(以及我正在做的每一点)都适用于相同的令牌范围。
  • 我已经添加了我返回的日志,需要更正我最后的评论:我不知道bucket id根据之前的存储请求是否正确,所以我将重点关注找出来。与其他 id 相比,我上面日志中的存储桶 id 似乎相对较短。

标签: python python-requests autodesk-forge


【解决方案1】:

过去我们有一个带有 v1 端点的 Python 示例代码。我今天迁移到 v2。它看起来运作良好。您能否看看它是否可以帮助您解决您遇到的问题? https://github.com/xiaodongliang/forge.workflow-python-sample

【讨论】:

  • 感谢代码,不过它看起来和我的差不多。你能从我添加的日志中看出我可能做错了什么吗?
  • 谢谢,这让我很感动,因为事实证明我需要检查存储桶是否存在,它没有列出 between steps 3 and 4 here 并且我没有从存储桶 ID 中删除 :
猜你喜欢
  • 1970-01-01
  • 2021-04-04
  • 2020-04-08
  • 2021-09-05
  • 2018-06-02
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多