我有一个页面,我需要有两个facebook登录按钮(使用fb登录php)。
我需要2个场景: 第一个按钮=登录 - >私人内阁重定向 第二个按钮=登录 - >重定向新文章页面。
当我尝试使用 $ helper-> getLoginUrl 两次,每个链接使用不同的 $ redirectURL 时,只有最后一次有效,并且首先给出错误: " Facebook SDK返回错误:跨站点请求伪造验证失败。 "州" URL和会话中的参数不匹配。"
$loginURL = $helper->getLoginUrl('site.com/', $fbPermissions);
$loginURL2 = $helper->getLoginUrl('site.com/new.php', $fbPermissions);
如何解决? 也许我可以通过FB-login url传输一些参数来知道在GET请求中按下了什么按钮?
答案 0 :(得分:-1)
这是因为getLoginUrl
在每次通话时都会在会话中创建新的state
值。
您有两种选择:
调用getLoginUrl一次,取结果,并使用字符串函数替换redirect_uri
参数的值。 (需要记住,要替换的值已经过URL编码。)
深入了解SDK,并调用其中一个在该过程中使用的低级方法。 getLoginURL
调用makeUrl
- 并在其中设置新的状态值,然后调用$this->oAuth2Client->getAuthorizationUrl
以最终创建登录URL。因此,您可以获得state
值,即第一次(也是唯一)调用getLoginUrl设置到持久数据存储中,然后使用该值和其余参数调用getAuthorizationUrl
以创建不同的值登录URL,但仍使用相同的状态值。