Руководство по получению 3-Legged токена для OAuth Autodesk Forge
Из этого руководства вы узнаете, как организовать авторизацию вашего приложения конечным пользователем с целью осуществления действий от имени пользователя.
Обратите внимание, что это руководство не покажет вам, как писать код на стороне сервера. Вместо этого он использует команды cURL, чтобы проиллюстрировать вызовы, которые надо использовать в вашем коде.
Это руководство предполагает, что приложение является веб-приложение, и что оно должно прочитать данные пользователя.
Прежде, чем начать
Перед тем, как начать, пожалуйста, выполните операции согласно руководству Создание приложения, чтобы создать приложение на платформе Forge. Укажите URL обратного вызова вашего приложения и запишите ваши client ID и secret.
Ознакомьтесь с общим потоком:
Шаг 1: Направьте пользователя к веб-процессу авторизации
В какой-то момент в пользовательском интерфейсе веб-приложения вы обнаружите, что вам необходимо получить согласие конечного пользователя для доступа к ресурсам Forge от имени пользователя. В зависимости от вашего приложения, вы можете сделать это, когда пользователь впервые начинает использовать приложение, или вы можете подождать до тех пор, пока вашему приложению на самом деле не потребуется доступ к ресурсу. В любом случае, вы перенаправите пользователя к конечной точке GET authorize в своем браузере. Например, вы можете указать ссылку, которая выглядит следующим образом:
Тот атрибут HREF немного трудно прочитать. Давайте попробуем по частям.
- Код - HTML: [Выделить]
- https://developer.api.autodesk.com/authentication/v1/authorize
Это является конечной точкой URI, и его следует использовать дословно.
- Код - HTML: [Выделить]
- response_type=code
Это то, что сообщает серверу OAuth, что вы используете "Authentication Code" в качестве типа гарантии, и он должен использоваться дословно.
- Код - HTML: [Выделить]
- client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE
Замените здесь значение client ID вашего приложения.
- Код - HTML: [Выделить]
- redirect_uri=http%3A%2F%2Fsampleapp.com%2Foauth%2Fcallback%3Ffoo%3Dbar
Это URL-кодированный URL обратного вызова, по которому вы хотите, чтобы был перенаправлен пользователь после предоставления согласия. В этом примере URL-адресом является http://sampleapp.com/oauth/callback?foo=bar. Замените значение здесь соответствующим URL вашего веб-приложения. Обратите внимание, что он должен соответствовать шаблону, указанному для URL обратного вызова в информации вашего приложения в Dev Portal.
- Код - HTML: [Выделить]
- scope=data:read
Этот фрагмент требует область применения data:read. Вы можете оставить это значение как есть для целей данного примера, но в вашем собственном приложении вы должны запросить область (области) применения, которые вам на самом деле нужны.
Переход по этой ссылке приведет конечного пользователя на страницу Autodesk Sign In:
После ввода учетных данных Autodesk ID и входа в систему, пользователь будет перенаправлен на страницу разрешения OAuth:
После того, как разрешение предоставлено, пользователь будет перенаправлен на ваш URL обратного вызова (redirect_uri) с дополнительным параметром запроса code, который содержит код авторизации (например, wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I).
Шаг 2: Реализуйте код, который извлекает код авторизации
В этом примере пользователь был перенаправлен по адресу http://sampleapp.com/oauth/callback?code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I,
Ваш код, который предоставляет URL /oauth/callback в вашем веб-приложении, должен извлечь значение параметра запроса code и сохранить его во временной переменной.
Шаг 3: Замените код авторизации для Access Token
Сразу же после извлечения параметра запроса code, вы должны поменять код авторизации для токена доступа при помощи конечной точки POST gettoken :
Замените значения client_id, client_secret, code, а также redirect_uri в примере ниже значениями, которые характерны для вашего приложения из приведенных выше шагов.
- curl -v 'https://developer.api.autodesk.com/authentication/v1/gettoken'
- -X 'POST'
- -H 'Content-Type: application/x-www-form-urlencoded'
- -d '
- client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE&
- client_secret=eUruM8HRyc7BAQ1e&
- grant_type=authorization_code&
- code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I&
- redirect_uri=http://sampleapp.com/oauth/callback
- '
Обратите внимание, что переносы строк выше были добавлены к команде cURL для удобства чтения, но должны быть удалены перед выполнением команды в терминале.
Для этого потока вы в любом случае не будете выполнять команду cURL в терминале, но вы можете использовать этот пример, чтобы сформировать правильный вызов в серверном кода.
Успешный ответ в соответствующей части, будет выглядеть следующим образом (хотя опять же, пример отформатирован для удобства чтения):
- HTTP/1.1 200 OK
- Cache-Control: no-cache, no-store, no-store
- Content-Type: application/json;charset=UTF-8
- Date: Sat, 04 Jun 2016 18:59:25 GMT
- Expires: Thu, 01 Jan 1970 00:00:00 GMT
- max-age: Thu, 01 Jan 1970 00:00:00 GMT
- Pragma: no-cache
- Server: Apigee Router
- Set-Cookie: PF=ix2tNCKRRb9WwM6dO78Eic;Path=/;Secure;HttpOnly
- Set-Cookie: bbbbbbbbbbbbbbb=KINDJALIIFLMNIHHAHLBPHPKNNFLHCIPDCKLJALMEDMDNIALGOKPFOLFNOOAMPMFBDMCGBOHPPEMLJGGECNMBMGBNKFOGINKCPLEAEJBFNDJEPHGCJPAJLKPNMLDEJEN; HttpOnly; secure
- X-Frame-Options: SAMEORIGIN
- Content-Length: 89
- Connection: keep-alive
- {
- "token_type": "Bearer",
- "expires_in": 1799,
- "refresh_token": "f2NWXxfnJOJMA1cW4k2zjFwmphf8vZjEUx3kmplFfn",
- "access_token": "Ff387cyQXw1elOT3nldiFIKBqDOs"
- }
Используйте соответствующие методы в вашем серверном коде, чтобы извлечь соответствующую информацию, возвращаемую конечной точкой. После этого вы сможете использовать маркер доступа для осуществления вызовов к другим конечным точкам API от имени конечного пользователя, которые требуют область применения data:read и имеют контекст аутентификации "user context required" или "user context optional". После истечения срока действия маркера, вы можете использовать маркер обновления (refresh token) с соответствующим именем конечной точки POST refreshtoken , чтобы запросить новый маркер.
Источник: https://developer.autodesk.com/en/docs/oauth/v2/tutorials/get-3-legged-token/
Обсуждение: http://adn-cis.org/forum/index.php?topic=
Опубликовано 07.10.2016