在我的应用中,我需要能够让用户通过OAuth登录并连接他们的帐户。我正在使用HWIOAuthBundle和FOSUserBundle来实现这一目标。但是有一个问题:当我通过Facebook注册时,或者自动创建一个User
实体并将其持久化到数据库,并为用户创建一个令牌。
我真正需要的是仅提取提供商提供给我的一些数据并将其映射到尚未保留的用户。
答案 0 :(得分:0)
如果我理解,您希望将Facebook信息添加到登录用户。
因此,您需要在提供商中执行的操作是检查是否存在已连接的用户,然后添加信息:
if (($this->container->get('security.context')->getToken() instanceof AbstractToken) {
$loggedUser = $this->container->get('security.context')->getToken()->getUser();
$loggedUser->setFacebookId($fbdata['id']);
/* userManager is fos_user.user_manager service */
$this->userManager->updateUser($loggedUser);
return $loggedUser;
}