我正在尝试将NelmioApiDocBundle用于Symfony 3.4项目API文档,同时还试图将OAuth 2授权用于开始项目API访问。
到目前为止,我已经关注了如何让FOSOAuthServerBundle正常工作的this tutorial。到目前为止,我可以 1.)使用命令行命令创建客户端:
php bin / console fos:oauth-server:create-client --redirect-uri =" ___" --grant型=" authorization_code" --grant型="密码" --grant型=" refresh_token" --grant型="令牌" --grant型=" client_credentials"
2。)我也可以通过访问我服务器上的这个网址手动获取访问令牌
3.。)我可以使用令牌通过在GET参数中包含令牌来访问需要OAuth访问的Symfony项目区域
但是,在NelmioApiDocBundle授权中,我无法完成此工作。这是一个截图:
如果输入我的client_id和密钥,它会按照预期将我带到登录页面。我可以输入我的登录信息,并按预期将我带到Approve或Deny Page。此时,如果我单击“批准”或“拒绝”,则会尝试使用" redirect_uri" http://localhost:3200/oauth2-redirect.html。无论我做什么,我都无法更改重定向URI。
如何获得正确的重定向URI?
答案 0 :(得分:1)
好的,这实际上很容易修复。您需要添加一行:
oauth2RedirectUrl: 'URLhere',
位于web / bundles / nelmioapidoc /
中的文件init-swagger-ui.js(Symfony 3.4)最终文件最终看起来像这样:
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;
};
此外,您可能希望从Swagger项目中下载文件oauth2-redirect.html以包含实际重定向。