在我的应用程序中,我需要能够让用户通过 OAuth 登录并连接他们的帐户。我正在使用 HWIOAuthBundle 和 FOSUserBundle 来实现这一点。但是有一个问题:当我通过 Facebook 或其他方式注册时,User
会自动创建一个实体并将其持久化到数据库中,并为用户创建一个令牌。
我真正需要的是只获取提供者提供给我的一些数据并将其映射到尚未持久化的用户。
在我的应用程序中,我需要能够让用户通过 OAuth 登录并连接他们的帐户。我正在使用 HWIOAuthBundle 和 FOSUserBundle 来实现这一点。但是有一个问题:当我通过 Facebook 或其他方式注册时,User
会自动创建一个实体并将其持久化到数据库中,并为用户创建一个令牌。
我真正需要的是只获取提供者提供给我的一些数据并将其映射到尚未持久化的用户。
如果我理解,您想向登录用户添加例如 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;
}