Как установить хорошие разрешения для загрузки файла с помощью FORGE API?
Я должен загрузить файл с сервера в управление документами, но у меня возникла проблема на этапе загрузки файла. Для информации, я делаю свой сценарий с Dynamics NAV.
Перед загрузкой из Dynamics NAV я попытался с помощью команд Git Bash и cURL: все работает.
Это разрешения, которые у меня есть: см. Здесь
Это все шаги и что я могу сделать:
- Найти HubID моей папки, которую я хочу загрузить (СДЕЛАНО)
- Создать хранилище (СДЕЛАНО)
- Загрузить файл (FAIL)
- Создать первую версию.
Когда я делаю шаг загрузки, у меня появляется ошибка 401: Запрещено, но я не знаю, куда мне положиться для установки хороших разрешений.
Это команда cURL:
curl -X PUT -H "Authorization: Bearer nq4dc0KRWeaaUnyIJA8aN0MIKi3j"
--data-binary '@\\server\folder\subfolder\file.rvt'
"https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/2448af43-45f3-4b81-a8cf-38c69b03197b.rvt"
Поэтому, увидев это, мне не нужно устанавливать специальные разрешения для загрузки файла.
Вот этот мой код Dynamics Nav:
HttpWebRequestMgt.Initialize(STRSUBSTNO('https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/%1',Filename));
HttpWebRequestMgt.DisableUI;
HttpWebRequestMgt.SetMethod('PUT');
HttpWebRequestMgt.SetContentType('application/octet-stream');
HttpWebRequestMgt.AddHeader('Authorization','Bearer ' + Token);
FileManagement.BLOBImportFromServerFile(TempBlob,ServerFolder+'\'+Filename);
HttpWebRequestMgt.AddBodyBlob(TempBlob);
CLEAR(TempBlob);
TempBlob.Blob.CREATEINSTREAM(ResponseInStream);
HttpWebRequestMgt.GetResponse(ResponseInStream,HttpStatusCode,ResponseHeaders);
ResponseInStream.READTEXT(ResponseText);
CLEAR(HttpWebRequestMgt);
CLEAR(TempBlob);
С этим мне нужны определенные разрешения...
Некоторые предложения?
2 ответа
Я нашел решение.
BIM360Setup.GET;
SalespersonPurchaser.GET(BIM360Setup."Default Job Admin");
IF Token = '' THEN
Token := Get3LeggedToken;
StorageID := COPYSTR(FileURNID,STRPOS(FileURNID,'/') + 1);//***
HttpWebRequestMgt.Initialize(STRSUBSTNO('https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/%1',StorageID));
HttpWebRequestMgt.DisableUI;
HttpWebRequestMgt.SetMethod('PUT');
HttpWebRequestMgt.SetContentType('application/x-www-form-urlencoded');
HttpWebRequestMgt.AddHeader('Authorization','Bearer ' + Token);
HttpWebRequestMgt.SetReturnType('*/*');
FileManagement.BLOBImportFromServerFile(TempBlob,ServerFolder+'\'+Filename);
HttpWebRequestMgt.AddBodyBlob(TempBlob);
CLEAR(TempBlob);
TempBlob.Blob.CREATEINSTREAM(ResponseInStream);
HttpWebRequestMgt.GetResponse(ResponseInStream,HttpStatusCode,ResponseHeaders);
ResponseText := TempBlob.ReadAsText('',TEXTENCODING::UTF8);
CLEAR(HttpWebRequestMgt);
CLEAR(TempBlob);
Проблема должна быть связана с вашим access_token. Прежде всего, вам нужно получить свой 3-сторонний токен доступа через API https://developer.autodesk.com/en/docs/oauth/v2/tutorials/get-3-legged-token/, чтобы загрузить файл, пожалуйста, убедитесь, что у вас есть область "data:create" или "data:write scope", подробности см. на странице https://developer.autodesk.com/en/docs/data/v2/tutorials/upload-file/.
Надеюсь, поможет.