在我网站的登录页面中,有一个带有两个标签的表单:一个用于登录,一个用于注册。
有一个注册Facebook的按钮,回调指向/complete-profile
,允许用户在注册前输入他的详细信息。
这也是一个用facebook登录的按钮,回调指向/login
,我在那里用相应的Facebook ID获取用户(如果存在)。
由于两个表单都在同一页面中,我必须使用getLoginUrl()
两次,因为这两个按钮有不同的回调。
$permissions = ['email', 'public_profile'];
$loginUrl = $helper->getLoginUrl('http://localhost/website/login', $permissions);
$registerUrl = $helper->getLoginUrl('http://localhost/website/complete-profile', $permissions);
使用注册按钮工作,因为它的URL是最后创建的,但是登录按钮不起作用。这是我收到的消息:跨站点请求伪造验证失败。 "州" URL和会话中的参数不匹配。
我做了一些阅读,似乎我得到了错误,因为当我调用getUrl时,第一个loginUrl的CSRF令牌被第二个loginUrl覆盖。
有没有办法在同一页面上生成两个具有不同回调的Facebook登录按钮?或者我必须使用两个不同的页面进行登录和注册,这真的不方便。