如何访问我的新 Symfony API

How to access my new Symfony API

我已经成功地结合了 FOSUserBundle、FOSOAuthServerBundle 和 FOSRestBundle。 我创建了一个客户端,并且创建了一个 UserController。我有我的第一条路线

http://domain.remote/api/users [获取列表用户].

OAuth 正在运行,我收到 "access denied" 消息。我想编写一些 javascript 代码来访问此 api,但恐怕我什至不知道从哪里开始。

谁能给我解释一下如何验证和访问我的新 Symfony API?任何例子都会非常有帮助。最好不要考虑 JS 框架,这样我就可以掌握这个概念。

[编辑]

一些补充信息。我正在编写的 JS 代码将让用户使用他们的用户名/密码登录,然后使用幕后工作的 API 管理他们的数据。

KNP 对此有非常详细的教程。请看一下this tutorial. List of all API tutorials can be found here

您的端点 /api/users 是安全端点吗?检查你的 security.yml 文件你需要什么样的授权来访问这个端点。例如:

api:
        pattern:    ^/
        security: true

上面的代码意味着您所有的 api url 都是安全的,需要经过身份验证的用户才能访问它。您需要访问安全上下文才能让您的用户登录。在 REST api 中处理身份验证的最常见方法是使用 OAuth 方法,最好是 OAuth2 方法。我建议你使用 FOSOAuthServerBundle 来处理 OAuth2。

安装捆绑包后,您需要创建 4 个实体(accesstoken、authcode、client、refreshtoken),您的 api 工作流程将如下所示:

  1. 您的每台设备(例如移动应用程序、桌面设备)都将有一个 client_id 和 client_secret。
  2. 您将向您的 api 请求令牌,使用 FOSOAuthServerBundle 令牌端点 (/oauth/v2/token) 传递授权类型(身份验证类型,您可以稍后自定义)和数据,例如: oauth/v2/token?client_id=<client_id>&client_secret=<client_secret>&grant_type=password&password=abc123&username=<yourlogin>
  3. 如果登录凭据有效,api 将 return 一个您将用于所有后续请求的访问令牌:http://domain.remote/api/users?access_token? Njc4NTA0MzQ3ZjE4MTBlOWU5ZGUxYTQ2ZWE3N2I2YzM4MzFjODcxMDdkYTU0MzIwOWE4Zjg4OGRiZWNjOTg2NQ

这将允许您向您的 api 提出授权请求。您可以参考FOSOAuthServerBundle documentations了解更多详情。

希望对您有所帮助。