我正试图从我的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);
}