Авторизация Oauth2 в NelmioApiDocBundle
Я пытаюсь использовать NelmioApiDocBundle для документации по API проектов Symfony 3.4, а также пытаюсь обойтись без авторизации OAuth 2 для доступа к API проекта.
До сих пор я следовал этому руководству о том, как заставить работать FOSOAuthServerBundle. Пока я могу 1.) создать клиента с помощью командной строки:
php bin / console fos: oauth-сервер: create-client --redirect-uri = "___" --grant-type = "authorization_code" --grant-type = "password" --grant-type = "refresh_token" - -grant-type = "token" --grant-type = "client_credentials"
2.) Я также могу получить токен доступа вручную, посетив этот URL на моем сервере
3.) Я могу использовать токен для доступа к областям моего проекта Symfony, требующим OAuth Access, включив токен в параметр GET
Тем не менее, в Авторизациях NelmioApiDocBundle я не могу заставить это работать до конца. Вот скриншот:
Если ввести мой client_id и секретный ключ, он переместится на страницу входа, как и ожидалось. Я могу ввести свою регистрационную информацию и, как и ожидалось, переместится на страницу подтверждения или отклонения. В этот момент, если я нажимаю Утвердить или Запретить, он пытается использовать "redirect_uri" http://localhost:3200/oauth2-redirect.html. Что бы я ни делал, я не могу изменить URI перенаправления.
Как получить правильный URI перенаправления?
1 ответ
Хорошо, это было на самом деле легко исправить. Вам нужно добавить одну строку:
oauth2RedirectUrl: 'URLhere',
в файл init-swagger-ui.js, который расположен (Symfony 3.4) в web/bundles/nelmioapidoc/
Окончательный файл в итоге выглядел так:
window.onload = () => {
const data = JSON.parse(document.getElementById('swagger-data').innerText);
const ui = SwaggerUIBundle({
oauth2RedirectUrl: 'URLhere',
spec: data.spec,
dom_id: '#swagger-ui',
validatorUrl: null,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: 'StandaloneLayout'
});
window.ui = ui;
};
Также вы, вероятно, захотите скачать файл oauth2-redirect.html из проекта Swagger, чтобы включить его для фактического перенаправления.