我开始实现 HWIOAuthBundle 并想创建自己的自定义资源所有者。但是我不清楚文件/目录结构。
我需要将文件放在哪里才能利用捆绑包?
我覆盖了 HWIOAuthBundle linkedin 资源所有者,因为我需要处理连接异常。您可以使用编译器传递来执行此操作:
namespace UserAccountBundle\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class OverrideServiceCompilerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$definition = $container->getDefinition('hwi_oauth.resource_owner.linkedin');
$definition->setClass('UserAccountBundle\OAuth\MyLinkedInResourceOwner');
}
}
然后在你的包中:
namespace UserAccountBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use UserAccountBundle\DependencyInjection\Compiler\OverrideServiceCompilerPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class UserAccountBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new OverrideServiceCompilerPass());
}
}
有关捆绑包覆盖的更多信息:http: //symfony.com/doc/current/cookbook/bundles/override.html
根据捆绑文档,您可以这样做。
我相信这是使用位于供应商捆绑目录 HWI\Bundle\OAuthBundle\OAuth\ResourceOwner 中的GenericOauth2ResourceOwner类。
看起来捆绑包不支持自定义资源所有者而不直接编辑捆绑包(这只是乍一看,我从未真正使用过这个捆绑包)。
oauth.xml 文件(https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/config/oauth.xml)链接到每个现有的资源所有者,所以我想你可以看看其中一个这里链接的那些将是一个很好的起点。