我尝试使用FOSOAuthServerBundle在我的实际symfony2项目中实现OAuth2。
我一直在关注Article来实施它。
由于我不使用FOS用户软件包,因此我必须创建一个UserProvider。
我也在他的Article中使用用户存储库。
我一直坚持这个错误:
ContextErrorException:Catchable Fatal Error:传递给Doctrine \ ORM \ EntityRepository :: __ construct()的参数2必须是Doctrine \ ORM \ Mapping \ ClassMetadata的实例,没有给出,在/ app / cache / dev / appDevDebugProjectContainer中调用。 php在第3527行并在/app/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php第67行中定义
我已经按照给定的services.yml代码:
并将其转换为Yaml,这里是我的文件(services.yml):
imports:
- { resource: parameters.yml }
parameters:
# wca_transition.example.class: WCA\TransitionBundle\Example
collection.import.from_email: "%import_from_email%"
collection.import.to_email: "%import_to_email%"
platform.entity.user.class: WCA\ServerBundle\Entity\Profile
platform.user.provider.class: WCA\ServerBundle\Provider\ProfileProvider
services:
# wca_betosee_transition.example:
# class: %wca_transition.example.class%
# arguments: [@service_id, "plain_value", %parameter%]
collectionImportCommand:
class: WCA\ServerBundle\Command\CollectionImporterCommand
calls:
- [setContainer, ["@service_container"] ]
platform.user.manager:
class: Doctrine\ORM\EntityManager
factory-service: doctrine
factory-method: getManagerForClass
arguments: ["%platform.entity.user.class%"]
platform.user.repository:
class: WCA\ServerBundle\Model\ProfileRepository
factory-service: platform.user.manager
factory-method: getRepository
arguments: ["%platform.entity.user.class%"]
platform.user.provider:
class: "%platform.user.provider.class%"
# arguments: ["@platform.user.repository"]
platform.grant_type.api_key:
class: WCA\ServerBundle\OAuth\ApiKeyGrantExtension
arguments: ["@platform.user.repository"]
tags:
- { name: fos_oauth_server.grant_extension, uri: http://mywebsite.local/grants/api_key }
我认为给定的错误来自我的配置,但我不知道自从我按照给出的内容可能出错。要么创建的服务没有得到给定的参数("没有给出")或者我没有通过正确的参数。
任何想法或提示?
PS:如果您需要任何其他文件,请不要犹豫,我会更新帖子。
答案 0 :(得分:4)
我怀疑它是否有帮助但是尝试将factory-service,factory-method更改为factory_service和factory_method以匹配Symfony文档。
答案 1 :(得分:1)
听起来它是唯一一篇很好地描述如何实现FOS OAuth2捆绑包的文章,甚至比他们自己的文档更好。 但由于某种原因,服务是用xml定义的,我发现它非常奇怪和丑陋。
无论如何,正如@Cerad所提到的,如果你将xml服务翻译成yaml格式,那么你将不得不替换 - by _并且它将正常工作。