传递参数HWIOAuthbundle symfony2


Pass parameter HWIOAuthbundle symfony2

我正试图从我的Facebook和Google登录按钮传递一个GET参数,该参数是我使用HWIOAuthbundle设置的。我已经研究过这个问题:通过symfony2/HWIOAuthBundle将参数路径设置为OAuth facebook登录,但我不太明白他是如何实现的。他提到了使用裁判,我对此一无所知——我也没有足够的声誉来对这个问题发表评论。。。

我在想这样的事情:

<a href="{{ path('google_login',{'datakey':1}) }}">Link</a>

但是我如何在我的FOSUBUserProvider中检索它呢?我感谢所有的帮助!

我终于让它工作起来了。然而,我不确定这是最好的方法。在我找到更合适的解决方案之前,这是一个快速的解决方案。

当有人使用datakey变量作为$_GET参数进入我的网站时,我会设置一个具有该值的cookie。当用户登录时,FOSUBUserProvider检查是否设置了数据密钥cookie;如果是的话,它会做自己的事情。

这是我目前能做的最好的事情,因为我还没有成功地通过hwioauthbundle将参数发送到我的FOSUBUserProvider中。

如果有人找到更好的解决方案,请告诉我!

无需设置cookie。只需先设置一个会话变量(在控制器中):

$session->set('role', 'ROLE_CLIENT');

然后,在UserProvider中注入会话(在services.yaml中):

app.user.oauth_provider:
  class:     App'Security'Core'User'AppUserProvider
  arguments: ['@doctrine', { google: googleId, facebook: facebookId, apple: appleId }, '@session']
  public:    true

最后,在UserProvider中获取变量,使用它,然后清除它:

$role = $this->session->get('role');
if ($role) {
  $user->addRole($role);
  $this->session->set('role', null);
}