symfony - 连接到 HWIOauthBundle 中的多个社交登录

标签 symfony fosuserbundle hwioauthbundle

我正在尝试安排能够使用社交网络登录(最初是 LinkedIn,但也可以是任何其他网络,或者从 FosUserBundle 自行生成),然后通过 Twitter、FB 添加到同一用户的新连接、Github 等

困难在于连接 FosUser 和 HWIOauthBundles 内的多个帐户连接。为了收集尽可能多的数据,并能够轻松地向服务添加额外的连接,我真的希望将每个新连接都作为一对多记录。 IE:使用 LinkedIn 进行初始登录会创建一条 FosUser 记录,并在“socialLogin”表中创建一个新行,接下来(例如使用 Twitter 登录)会在“socialLogin”表中添加一个新行,该记录返回到 fosUser.id .

如何使用当前登录的 (Fos) 用户作为 HWIOauth 将生成的新记录的一部分?最终结果是,能够使用任何已知用户登录并进入同一帐户。

最佳答案

解决办法其实很简单。首先查看Symfony2: How to login using OAuth (HWIOAuthBundle) + custom roles (by default and loaded from DB)这是 HwiOAuthBundle 的一个很好的操作方法,然后向下滚动并仔细查看 public function loadUserByOAuthUserResponse(){ ... } 部分。

从那里,您的工作流程将从响应对象中检查提供者名称。然后根据提供商名称,您可以更新您的用户(使用电子邮件进行搜索)。但是,使用 Twitter 时您可能会遇到问题,因为 Twitter 不提供用户电子邮件。因此,您需要向用户询问该电子邮件地址,获得该地址后,您可能需要将当前用户帐户(对于基于 Twitter 的注册,将其视为临时帐户)与以前的用户帐户与此电子邮件合并。

否则,如果您的用户已经使用 form/other-social-login 登录(在连接 Twitter 之前),您可以在他连接后添加他的 Twitter 详细信息。但是您需要在 session 中存储用户当前登录的详细信息(以便您可以在用户使用 Twitter token 返回后获取它)

希望对你有帮助

关于symfony - 连接到 HWIOauthBundle 中的多个社交登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19425056/

相关文章:

Symfony2 - 页面浏览计数器

symfony - FOS UserBundle 无法登录

symfony - 在 Symfony2 表单输入中设置带有翻译的占位符属性

Symfony2 : How to login using OAuth (HWIOAuthBundle) + custom roles (by default and loaded from DB)

php - 如何使用 Goutte 提交表单并获取最终 URI?

php - Symfony 功能测试失败,但相同的请求在浏览器中有效

symfony - FOSUserBundle 不使用 trans_default_domain 进行翻译

Symfony2 : Make users complete registration after login if some fields are missing

javascript - 如何在 symfony 中反序列化查询序列化形式