我用FOSFacebookBundle成功地实现了FOSUserBundle。一切都很好。
现在,我希望能够检测到用户与FOSFacebookBundle的第一个连接。
我有一个FacebookAuthenticationSuccessHandler,每次Facebook认证成功时都会调用它,但我想声明一种"FirstFacebookAuthenticationSuccessHandler",只有在用户还不存在的情况下才会这样做。该处理程序的目标是能够向每个新用户发送一封欢迎电子邮件。
对于典型的注册,我只使用一个RegistrationSuccessListener。
你知道我该怎么做吗?
发布于 2014-01-03 13:56:09
在我找到解决方案的时候回答我自己的问题。
1/我创建(并注册)了一个名为NewFacebookUserListener的新事件侦听器:
...
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
MyCustomEvents::NEW_FACEBOOK_USER => 'onNewFacebookUser'
);
}
public function onNewFacebookUser(UserEvent $event)
{
// we get the user
$user = $event->getUser();
// and now you can do what you wish
}2/在我的FacebookProvider (位于Security/User/Provider下)中,我添加了几行来分派这个新事件:
$user->setFBData($fbdata);
// we send a "FB user created" event
$dispatcher = $this->container->get('event_dispatcher');
$dispatcher->dispatch(MyCustomEvents::NEW_FACEBOOK_USER, new UserEvent($user, $this->container->get('request')));正如预期的那样,只有在创建了新的Facebook用户时,才会发送事件。
https://stackoverflow.com/questions/20902444
复制相似问题