Есть ли в настройках приложения что-то, что мне нужно изменить?
Если под app settings
вы подразумевали на портале Forge App, то вам нужно только указать там API (убедитесь, что они проверены на странице), к которым вашему приложению потребуется доступ.
Включает ли область создания разрешения на чтение, а затем область записи включает создание и чтение, или эту область необходимо отправлять отдельно?
Нет, так не работает - вам нужно будет явно указать каждый из них.
Если отдельно, как это делается, когда пользователь дает разрешение на приложение? Это что-то вроде & scope = data: read & scope: create
Нет, переменные области видимости разделены пробелом. Для получения трехстороннего подтверждения вам необходимо получить код авторизации, перенаправив пользователя для аутентификации на нашем портале входа в систему, прежде чем переходить к токенам доступа, и там вам нужно будет указать комбинации адресов перенаправления и области действия в URL-адресе запроса (не забудьте URLEncode их), такие как https://developer.api.autodesk.com/authentication/v1/authorize?response_type=code&client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE&redirect_uri=http%3A%2F%2Fsampleapp.com%2Foauth%2Fcallback%3Ffoo%3Dbar&scope=data:read
. Подробнее см. здесь .
И ознакомьтесь с нашим официальным PHP клиентским 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'
)
]
]);