2

我正在使用HWIOAuthBundlewithFOSUserBundle成功。

当我转到该/login页面时,它会将我重定向到 Google 帐户、授权并返回填写数据的注册表单(密码字段除外)。

是否可以使用省略注册表单自动注册用户?

在这种情况下,由于使用 Google 帐户进行身份验证,我们不需要密码。

我应该如何实现这种情况?

4

4 回答 4

12

一个问题有点老了,但迟到总比没有好。

您只需要创建一个自定义提供程序- 如果您想将捆绑包与 FOSUserBundle 集成,您需要覆盖FOSUBUserProvider类。

HWIOAuthBundle/Security/Core/User目录中,您可以找到 OAuthBundle 中可用的所有提供程序。

要在连接时创建新用户,您只需覆盖 FOSUBUserProvider(或 EntityUserProvider 等)提供程序类的 loadUserByOAuthUserResponse() 方法。如您所见,如果在数据库中找不到用户,默认方法会抛出异常,您只需要它调用 userManager 并创建新条目。

这与 FOSFacebookBundle 集成的情况完全相同(如果您这样做了)。

希望这个答案对您有所帮助(尤其是听起来有点混乱)。

编辑:
我发布了一篇解释集成过程的博客文章。

于 2013-01-21T18:10:38.473 回答
2

试试这个要点

或本教程

于 2013-07-13T20:44:22.213 回答
1

这里有一个关于如何集成 HWIOAuthBundle 和 FOSUserBundle 以实现自动用户注册更新的很好的演练,可能值得一读:

https://gist.github.com/danvbe/4476697

于 2014-04-04T10:44:30.943 回答
-4

是的当然。

您应该处理来自 google 的响应并手动授权用户,例如:

// authorize 
$token = new OAuthToken(null, $user->getRoles());
$token->setUser($user);
$token->setAuthenticated(true);

// update session
$session = $this->getContainer()->get('session');
$session->set('_security_secured_area', serialize($token));
$session->save();

在用户被授权后,用户重定向到呼叫页面

于 2012-12-12T14:34:45.650 回答