难点在于连接FosUser和HWIOauthBundles中的多个帐户连接。为了收集尽可能多的数据,并能够轻松地向服务添加额外的连接,我真的希望将每个新连接作为一对多记录。例如:第一次使用LinkedIn登录时会创建一条FosUser记录,在'socialLogin‘表中创建一个新行,下一次(比如使用Twitter登录)会在'socialLogin’表中添加一个新行,并引用回fosUser.id。
如何使用当前登录的(Fos)用户作为HWIOauth将生成的新记录的一部分?最终结果将是,能够以任何已知用户登录以进入同一帐户。
发布于 2013-10-27 00:07:31
解决方案实际上很简单。首先查看Symfony2: How to login using OAuth (HWIOAuthBundle) + custom roles (by default and loaded from DB),这是一个很棒的HwiOAuthBundle操作指南,然后向下滚动并仔细查看公共函数loadUserByOAuthUserResponse(){ ... }部分。
从那里,您的工作流程将检查响应对象中的提供程序名称。然后根据提供商名称,您可以更新您的用户(使用电子邮件进行搜索)。然而,使用twitter你可能会遇到问题,因为twitter不提供用户电子邮件。因此,您需要向您用户要电子邮件地址,在获得该地址后,您可能需要将当前用户帐户(对于基于twitter的reg,将其视为临时帐户)与此电子邮件的以前用户帐户合并。
否则,如果您的用户已经使用form/other-social-login登录(在连接到twitter之前),您可以在他连接到twitter之后添加他的twitter详细信息。但您需要将用户当前登录的详细信息存储在会话中(以便您可以在用户带着twitter令牌回来后获取它)
希望能有所帮助
发布于 2013-10-22 14:28:48
第一步是创建用户实体和social_data表之间的关系,剩下的就是覆盖定制的用户提供者FOSUBUserProvider.php,我相信您已经开始这样做了,因为您已经让FOSUserBundle和HWIOAuthBundle协同工作了。
我稍后会用实际的代码做一些编辑,但我必须回答这个问题才能让你在那之前走上正轨。
https://stackoverflow.com/questions/19425056
复制相似问题