Как получить список файлов с помощью Autodesk Data Management API

#autodesk-forge #autodesk-data-management

#autodesk-forge #autodesk-управление данными

Вопрос:

Я использую серверную часть Laravel на своей платформе. Я смог получить трехногий токен, но когда я пытаюсь получить список концентраторов для пользователя, ответ полностью отличается от примера.

     $client = new Client(); //GuzzleHttpClient     
    $response = $client->request('GET', 'https://developer.api.autodesk.com/project/v1/hubs', [
        'headers' => [
            'Authorization' => 'Bearer '.$obj->access_token
            'x-user-id' => $userObj->userId
        ]
    ]);
  

Я подтвердил, что идентификатор пользователя и токен отправлены нормально. Однако ответ, который я получаю, совсем не похож на приведенный в примере.

 object(GuzzleHttpPsr7Response)#611 (6) {
  ["reasonPhrase":"GuzzleHttpPsr7Response":private]=>string(2) "OK"
  ["statusCode":"GuzzleHttpPsr7Response":private]=>int(200)
  ["headers":"GuzzleHttpPsr7Response":private]=>array(11) {
  ["Content-Type"]=>
array(1) {
  [0]=>
  string(24) "application/vnd.api json"
}
["Date"]=>
array(1) {
  [0]=>
  string(29) "Tue, 26 Mar 2019 19:55:02 GMT"
}
["Referrer-Policy"]=>
array(1) {
  [0]=>
  string(24) "origin-when-cross-origin"
}
["Server"]=>
array(1) {
  [0]=>
  string(8) "forge-dm"
}
["Strict-Transport-Security"]=>
array(1) {
  [0]=>
  string(35) "max-age=31536000; includeSubDomains"
}
["X-Content-Type-Options"]=>
array(1) {
  [0]=>
  string(7) "nosniff"
}
["X-Frame-Options"]=>
array(1) {
  [0]=>
  string(4) "DENY"
}
["X-Request-Id"]=>
array(1) {
  [0]=>
  string(36) "b747247f-b93b-4557-ae11-821b76fc8bba"
}
["X-XSS-Protection"]=>
array(1) {
  [0]=>
  string(13) "1; mode=block"
}
["Content-Length"]=>
array(1) {
  [0]=>
  string(4) "1087"
}
["Connection"]=>
array(1) {
  [0]=>
  string(10) "keep-alive"
}
}

["headerNames":"GuzzleHttpPsr7Response":private]=>array(11) {
["content-type"]=>string(12) "Content-Type"
["date"]=>string(4) "Date"
["referrer-policy"]=>string(15) "Referrer-Policy"
["server"]=>string(6) "Server"
["strict-transport-security"]=>string(25) "Strict-Transport-Security"
["x-content-type-options"]=>string(22) "X-Content-Type-Options"
["x-frame-options"]=>string(15) "X-Frame-Options"
["x-request-id"]=>string(12) "X-Request-Id"
["x-xss-protection"]=>string(16) "X-XSS-Protection"
["content-length"]=>string(14) "Content-Length"
["connection"]=>string(10) "Connection"
}
  ["protocol":"GuzzleHttpPsr7Response":private]=>string(3) "1.1"
  ["stream":"GuzzleHttpPsr7Response":private]=>object(GuzzleHttpPsr7Stream)#635 (7) {
["stream":"GuzzleHttpPsr7Stream":private]=>
resource(47) of type (stream)
["size":"GuzzleHttpPsr7Stream":private]=>
NULL
["seekable":"GuzzleHttpPsr7Stream":private]=>
bool(true)
["readable":"GuzzleHttpPsr7Stream":private]=>
bool(true)
["writable":"GuzzleHttpPsr7Stream":private]=>
bool(true)
["uri":"GuzzleHttpPsr7Stream":private]=>
string(10) "php://temp"
["customMetadata":"GuzzleHttpPsr7Stream":private]=>
array(0) {
    }
  }
}
  

Ответ №1:

Ответ отличается, поскольку вы используете x-user-id в своем заголовке, и при этом должен использоваться двухэтапный токен, а не трехэтапный, как указано в документации (поскольку у вас уже есть конкретный пользователь, от которого вы хотите получить данные).

x-user-id —— В контексте двусторонней аутентификации приложение имеет доступ ко всем пользователям, указанным администратором в интерфейсе интеграции SaaS. Предоставляя этот заголовок, вызов API будет ограничен для действий только от имени указанного пользователя.

Это даст вам только проекты для среды BIM 360 без идентификатора для различия типа проектов. У вас уже настроена интеграция?

Я предложу: — трехногий токен — ПОЛУЧИТЕ концентраторы, используя только токен в вашем заголовке

должен выдать вам ответ, аналогичный приведенному в примере. Если данные, которые вы ищете, взяты из BIM 360, вам нужно будет убедиться, что в вашей учетной записи включена пользовательская интеграция.

Комментарии:

1. Я попробовал это без идентификатора пользователя и получил тот же ответ. Если это не тот способ получения списка файлов для учетной записи Fusion 360, как вы это делаете?

2. Перепроверка с командой, но я совершенно уверен, что использование двухэтапного токена с олицетворением пользователя (заголовок x-user-id) доступно только для учетных записей BIM 360 Docs . Для Fusion Team и A360 вам понадобится трехногий токен