#autodesk-forge
#autodesk-forge
Вопрос:
Сначала я создал приложение и начал его разработку, используя только область данных: чтение. Теперь я понял, что мне нужны данные: создайте область.
- Есть ли что-то в настройках приложения, что мне нужно изменить?
- Включает ли область создания разрешения на чтение, а затем область записи — создание и чтение — или эту область нужно отправлять отдельно?
- Если по отдельности, то как это делается, когда пользователь предоставляет разрешение приложению? Это что-то вроде amp;scope=data:readamp;scope:create
- Мне не нужно хранить, а затем использовать два токена, не так ли?
- Как это обрабатывается при использовании 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 их