Autodesk Forge API — настройка областей для данных с помощью функций чтения, записи и создания

#autodesk-forge

#autodesk-forge

Вопрос:

Сначала я создал приложение и начал его разработку, используя только область данных: чтение. Теперь я понял, что мне нужны данные: создайте область.

  1. Есть ли что-то в настройках приложения, что мне нужно изменить?
  2. Включает ли область создания разрешения на чтение, а затем область записи — создание и чтение — или эту область нужно отправлять отдельно?
  3. Если по отдельности, то как это делается, когда пользователь предоставляет разрешение приложению? Это что-то вроде amp;scope=data:readamp;scope:create
  4. Мне не нужно хранить, а затем использовать два токена, не так ли?
  5. Как это обрабатывается при использовании curl? Области чтения и создания отправляются в виде массива, например…
     $response = $client->request('POST', 'https://developer.api.autodesk.com/authentication/v1/gettoken', [
        'form_params' => [
            'grant_type' => 'authorization_code',
            'code' => $authCode,
            'client_id' => $FusionID,
            'client_secret' => $FusionSecret,
            'redirect_uri' => 'https://www.example.com/fusionauth',
            'scope' => array('data'=>'create', 'data'=>'read')
        ]
    ]);
     

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

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

1. ОК. Я долго играл с этим, и это выглядит как amp;scope=data:чтение данных: создание

Ответ №1:

Есть ли что-то в настройках приложения, что мне нужно изменить?

Если app settings вы имели в виду портал приложений Forge, то вам нужно только указать там API (убедитесь, что они отмечены на странице), к которым вашему приложению потребуется доступ.

Включает ли область создания разрешения на чтение, а затем область записи — создание и чтение — или эту область нужно отправлять отдельно?

Нет, так не работает — вам нужно будет указать каждую из них явно.

Если по отдельности, то как это делается, когда пользователь предоставляет разрешение приложению? Это что-то вроде amp;scope=data:readamp;scope:create

Нет, переменные области разделены пробелом. Для 3-стороннего oauth вам необходимо будет получить код авторизации путем перенаправления пользователя для аутентификации на нашем портале входа в систему, прежде чем вы перейдете к маркерам доступа, и там вам нужно будет указать адрес перенаправления и комбинации областей в URL-адресе запроса (не забудьте их URLEncode), например https://developer.api.autodesk.com/authentication/v1/authorize?response_type=codeamp;client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGEamp;redirect_uri=http://sampleapp.com/oauth/callback?foo=baramp;scope=data:read . Подробности см. Здесь.

И ознакомьтесь с нашим официальным PHP client SDK — это сэкономит вам массу усилий и времени.

Мне не нужно хранить, а затем использовать два токена, не так ли?

Если ваш токен содержит достаточные разрешения (скажем data:read , и data:create ), тогда нет.

Как это обрабатывается при использовании curl? Области чтения и создания отправляются в виде массива, например…

Для cURL смотрите образцы здесь: https://forge.autodesk.com/en/docs/oauth/v2/tutorials/get-2-legged-token /

И, как мы уже говорили выше, вам нужно будет указать области при перенаправлении пользователя для аутентификации, поэтому в вашем запросе на получение конечного токена доступа вы должны сделать что-то вроде:

 $response = $client->request('POST', 'https://developer.api.autodesk.com/authentication/v1/gettoken', [
     'form_params' => [
        'grant_type' => 'authorization_code',
        'code' => $authCode,
        'client_id' => $FusionID,
        'client_secret' => $FusionSecret,
        'redirect_uri' => 'https://www.example.com/fusionauth'
        )
    ]
]);
 

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

1. «переменные области разделяются пробелом». Я этого не понимаю. Как вы сообщаете, что запрашиваете области чтения и создания? amp;scope=data:read create недопустимый URL-адрес.

2. Как мы уже говорили в моем ответе, вы можете URLEncode их