如何访问我的新Symfony API

时间:2015-07-28 03:58:34

标签: javascript symfony fosuserbundle fosrestbundle fosoauthserverbundle

我设法将FOSUserBundle,FOSOAuthServerBundle和FOSRestBundle结合起来。 我创建了一个客户端,并且我创建了一个UserController。我有第一条路线

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

OAuth正在运行,我收到“拒绝访问”消息。我想写一些访问这个api的javascript代码,但我恐怕我甚至不知道从哪里开始。

有人可以给我一些关于如何验证和访问我的新Symfony API的解释吗?任何例子都会非常有用。最好没有JS框架,所以我可以掌握这个概念。

[编辑]

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

2 个答案:

答案 0 :(得分:1)

KNP有非常详细的教程。请查看this教程。可以找到所有API教程的列表here

答案 1 :(得分:1)

您的端点/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. 您将使用FOSOAuthServerBundle令牌端点(/oauth/v2/token)向您的api请求令牌,传递授权类型(身份验证类型,您可以稍后自定义)和数据,例如:  oauth/v2/token?client_id=<client_id>&client_secret=<client_secret>&grant_type=password&password=abc123&username=<yourlogin>
  3. 如果登录凭据有效,api将返回您将用于所有后续请求的访问令牌:http://domain.remote/api/users?access_token? Njc4NTA0MzQ3ZjE4MTBlOWU5ZGUxYTQ2ZWE3N2I2YzM4MzFjODcxMDdkYTU0MzIwOWE4Zjg4OGRiZWNjOTg2NQ
  4. 这将允许您向您的api发出授权请求。您可以参考FOSOAuthServerBundle documentations了解更多详情。

    希望它有所帮助。