FB登录PHP - 一页 - 2个登录按钮

时间:2017-09-27 18:28:51

标签: php facebook login

我有一个页面,我需要有两个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请求中按下了什么按钮?

1 个答案:

答案 0 :(得分:-1)

这是因为getLoginUrl在每次通话时都会在会话中创建新的state值。

您有两种选择:

  • 调用getLoginUrl一次,取结果,并使用字符串函数替换redirect_uri参数的值。 (需要记住,要替换的值已经过URL编码。)

  • 深入了解SDK,并调用其中一个在该过程中使用的低级方法。 getLoginURL调用makeUrl - 并在其中设置新的状态值,然后调用$this->oAuth2Client->getAuthorizationUrl以最终创建登录URL。因此,您可以获得state值,即第一次(也是唯一)调用getLoginUrl设置到持久数据存储中,然后使用该值和其余参数调用getAuthorizationUrl以创建不同的值登录URL,但仍使用相同的状态值。