首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FB登录PHP -一个页面-2个登录按钮

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

Stack Overflow用户
提问于 2017-09-27 18:28:50
回答 1查看 903关注 0票数 0

我有一个页面,我需要有两个facebook登录按钮(使用fb登录php)。

我需要两个场景:第一个按钮=登录->重定向到私人内阁,第二个按钮=登录->重定向到新的文章页面。

当我尝试对每个链接使用两次$helper->getLoginUrl和不同的$redirectURL时,只会给出最后一个错误:"Facebook返回一个错误:跨站点请求伪造验证失败。来自URL和会话的“状态”参数不匹配。“

代码语言:javascript
复制
$loginURL = $helper->getLoginUrl('site.com/', $fbPermissions);
$loginURL2 = $helper->getLoginUrl('site.com/new.php', $fbPermissions);

如何解决这个问题?也许我可以通过FB-登录url传输一些参数来知道在GET请求中按了哪个按钮?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-28 09:52:54

这是因为getLoginUrl在每次调用时都在会话中创建了一个新的state值。

你有两个选择:

  • 调用getLoginUrl一次,获取结果,并使用string函数替换redirect_uri参数的值。(需要记住,要替换的值是URL编码的。)
  • 深入到SDK中,调用过程中使用的低级别方法之一。getLoginURL调用makeUrl -在其中设置新的状态值,然后调用$this->oAuth2Client->getAuthorizationUrl以最终创建登录URL。因此,您可以获得state值,第一个(也是唯一的)调用getLoginUrl集到持久数据存储中,然后使用该参数和其他参数调用getAuthorizationUrl,以创建不同的登录URL,但仍然使用相同的状态值。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46454843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档