2017-10-11 67 views
0

我下面所描述的過程here但在第4步:由403得到停止我有data:write令牌和data:create範圍爲specified in the docs(和其他API方法需要那些工作範圍)但我無法獲得成功的迴應,我認爲這關係到我如何發送文件數據。我的代碼如下所示:PUT文件數據與Python中的Autodesk 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"} 
+0

根據這麼簡單的描述難以判斷......你能顯示bucket_id和objet_name嗎?他們是否正確?您只能將一個資源上傳到在步驟3中創建的給定存儲。此外,錯誤響應還應包含除提供提示的http代碼之外的元數據 –

+0

@PhilippeLeefsma是的,信息是正確的,存儲區和對象信息是在前一步中工作。元數據只是告訴我,我有一個權限問題,這似乎有誤導性,因爲前面的步驟(以及我正在執行的每一個其他步驟)都適用於相同標記的範圍。 – Tom

+0

我已經添加了我返回的日誌,需要糾正我的最後一條評論:我不知道基於事先存儲請求的存儲桶標識是否正確,因此我將專注於發現該問題。與其他ID相比,我上面日誌中的存儲桶ID相對較短。 – Tom

回答

1

我們在過去有一個v1端點的示例代碼。我今天遷移到v2。它看起來運行良好。你能否看看它是否可以幫助你解決你遇到的問題? https://github.com/xiaodongliang/forge.workflow-python-sample

+0

感謝您的代碼,它看起來幾乎與我的一樣。你能從日誌中看出我添加了什麼,我可能做錯了嗎? – Tom

+0

謝謝,這讓我感動,因爲事實證明我需要檢查是否存在桶,[這裏的步驟3和4之間沒有列出](https://developer.autodesk.com/en/docs/data/ v2/tutorials/upload-file /),而我並沒有從我的存儲桶ID中刪除':'。 – Tom