0

我使用 FOSUserBundle 成功实现了 FOSFacebookBundle。一切都很好。

现在,我希望能够检测到用户与 FOSFacebookBundle 的第一次连接。

我有一个 FacebookAuthenticationSuccessHandler,每次 Facebook 身份验证成功时都会调用它,但我想声明一种“FirstFacebookAuthenticationSuccessHandler”,仅在用户不存在时调用。此处理程序的目标是能够向每个新用户发送一封欢迎电子邮件。

对于经典注册,我只需使用 RegistrationSuccessListener。

你知道我该怎么做吗?

4

1 回答 1

0

在我找到解决方案时回答我自己的问题。

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 用户时才会调度该事件。

于 2014-01-03T13:56:09.677 回答