我已经设法结合FOSUserBundle, FOSOAuthServerBundle和FOSRestBundle。我创建了一个客户端,并创建了一个UserController。我有了我的第一条路线
http://domain。remote/api/users [GET list users].
OAuth正在工作,我得到一个"访问拒绝"消息。我想写一些javascript代码访问这个api,但恐怕我甚至不知道从哪里开始。
有人能给我一些解释如何认证和访问我的新Symfony API?任何例子都会很有帮助。最好不要考虑JS框架,这样我就能掌握这个概念。
[编辑]一些附加信息。我正在编写的JS代码将让用户登录他们的用户名/密码,然后管理他们的数据与后台工作的API。
您的端点/api/users
是安全端点吗?检查你的安检。Yml文件需要什么样的授权才能访问这些端点。例如:
api:
pattern: ^/
security: true
上面的代码意味着你所有的api url都是安全的,需要一个经过身份验证的用户来访问。您需要访问安全上下文来登录您的用户。在REST api中处理身份验证的最常见方法是使用OAuth方法,最好是OAuth2方法。我建议你使用FOSOAuthServerBundle来处理OAuth2。
安装bundle后,你需要创建4个实体(accesstoken, authcode, client, refreshtoken),你的api工作流将是这样的:
- 您的每个设备(移动应用程序,桌面,例如)将有一个client_id和client_secret。
- 你将请求一个令牌到你的api,使用FOSOAuthServerBundle令牌端点(
/oauth/v2/token
)传递授权类型(认证类型,你可以自定义以后)和数据,例如:oauth/v2/token?client_id=<client_id>&client_secret=<client_secret>&grant_type=password&password=abc123&username=<yourlogin>
- 如果登录凭据是有效的,api将返回一个访问令牌,您将使用所有后续请求:
http://domain.remote/api/users?access_token? Njc4NTA0MzQ3ZjE4MTBlOWU5ZGUxYTQ2ZWE3N2I2YzM4MzFjODcxMDdkYTU0MzIwOWE4Zjg4OGRiZWNjOTg2NQ
这将允许您向api发出授权请求。你可以参考FOSOAuthServerBundle文档了解更多细节。
希望有帮助。
KNP对此有非常详细的教程。请看看这个教程。所有API教程的列表可以在这里找到