我有一个页面,我需要有两个facebook登录按钮(使用fb登录php)。
我需要两个场景:第一个按钮=登录->重定向到私人内阁,第二个按钮=登录->重定向到新的文章页面。
当我尝试对每个链接使用两次$helper->getLoginUrl和不同的$redirectURL时,只会给出最后一个错误:"Facebook返回一个错误:跨站点请求伪造验证失败。来自URL和会话的“状态”参数不匹配。“
$loginURL = $helper->getLoginUrl('site.com/', $fbPermissions);
$loginURL2 = $helper->getLoginUrl('site.com/new.php', $fbPermissions);如何解决这个问题?也许我可以通过FB-登录url传输一些参数来知道在GET请求中按了哪个按钮?
发布于 2017-09-28 09:52:54
这是因为getLoginUrl在每次调用时都在会话中创建了一个新的state值。
你有两个选择:
redirect_uri参数的值。(需要记住,要替换的值是URL编码的。)getLoginURL调用makeUrl -在其中设置新的状态值,然后调用$this->oAuth2Client->getAuthorizationUrl以最终创建登录URL。因此,您可以获得state值,第一个(也是唯一的)调用getLoginUrl集到持久数据存储中,然后使用该参数和其他参数调用getAuthorizationUrl,以创建不同的登录URL,但仍然使用相同的状态值。https://stackoverflow.com/questions/46454843
复制相似问题