Как установить хорошие разрешения для загрузки файла с помощью FORGE API? - PullRequest
0 голосов
/ 28 мая 2018

Мне нужно загрузить файл с сервера в управление документами, но у меня возникла проблема на этапе загрузки файла.Для информации я делаю свой сценарий с Dynamics NAV.

Перед загрузкой из Dynamics NAV я пытался использовать команды Git Bash и cURL: это работает.

Это разрешения, которые у меня есть: см. Здесь

Это все шаги и что я могу сделать:

  • Найти HubID моей папки, которую я хочу загрузить (ГОТОВО)
  • Создать хранилище (СДЕЛАНО)
  • Загрузить файл (СБОЙ)
  • Создать первую версию.

Когда я выполняю шаг загрузки, у меня появляется ошибка 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 ]

0 голосов
/ 04 июня 2018

Я нашел решение.

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);
0 голосов
/ 29 мая 2018

Проблема должна быть связана с вашим 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/.

Надеюсь, это поможет.

...