Php fb登录错误-CSRF状态令牌与提供的令牌不匹配
我在我的网站上使用facebook登录 从下载facebook php sdk源代码 对于facebook登录,请按照 在第一个实例中,它从未登录,只有在两次尝试后才能通过facebook登录。每次我尝试登录时都会显示CSRF错误 在进一步挖掘代码(base_facebook.php)后,我们知道在第一次登录时:Php fb登录错误-CSRF状态令牌与提供的令牌不匹配,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我在我的网站上使用facebook登录 从下载facebook php sdk源代码 对于facebook登录,请按照 在第一个实例中,它从未登录,只有在两次尝试后才能通过facebook登录。每次我尝试登录时都会显示CSRF错误 在进一步挖掘代码(base_facebook.php)后,我们知道在第一次登录时:$this->state不等于$server_info['state'],因此出现了CSRF错误 试图找到解决此错误的方法浏览各种帖子,但没有成功。请提出解决办法。谢谢,我也有这个问题
$this->state
不等于$server_info['state']
,因此出现了CSRF错误
试图找到解决此错误的方法浏览各种帖子,但没有成功。请提出解决办法。谢谢,我也有这个问题 在我的站点上,我还通过名称“state”设置了一个cookie和$\u会话变量。这导致了与Facebook类的冲突,因为FB类使用相同的密钥名 以下是我对其他人的解决方案: Facebook PHP SDK v3.2.3 我们要做的是用“fb_state”替换掉某些“state”实例 编辑(Marcus):我还用$\u GET['state']替换掉了$\u REQUEST['state']的所有实例。这将强制应用程序从URL post用户授权中获取“state”值,因为$\u请求将拾取您可能已经拥有的任何存储的“state”cookie。就我而言,有一个 例如:www.example.com/?code=AQA5cjNZ8iuZ…&状态=48a4a0a89ebb0c568f713fabebc4899#= 我以前存储的“状态”cookie由于我自己网站上的以前活动:上
echo $_REQUEST['state']; // produces 'ON'
echo $_GET['state']; // produces 48a4a0a89ebb0c568f713fabebcd4899
在我的网站上。我不打算仅仅为了FBSDK而改变我的站点在服务器上存储cookie和会话变量的方法
在不将$\u REQUEST更改为$\u GET的情况下,getCode()函数将返回false,因为:
if ($this->state === $_REQUEST['state']) {
不会解决。在我的例子中,实际的比较是48A4A0A89EBB0C568F713FABECD4899与“ON”
src/facebook.php
public function __construct($config) {
...
$state = $this->getPersistentData('state'); // line 67
// change to
$state = $this->getPersistentData('fb_state');
protected static $kSupportedKeys =
array('fb_state', 'code', 'access_token', 'user_id'); // line 83
$state = $this->getPersistentData('fb_state'); // line 263
$this->clearPersistentData('fb_state'); // 730
$this->setPersistentData('fb_state', $this->state); // line 776
src/base\u facebook.php
public function __construct($config) {
...
$state = $this->getPersistentData('state'); // line 67
// change to
$state = $this->getPersistentData('fb_state');
protected static $kSupportedKeys =
array('fb_state', 'code', 'access_token', 'user_id'); // line 83
$state = $this->getPersistentData('fb_state'); // line 263
$this->clearPersistentData('fb_state'); // 730
$this->setPersistentData('fb_state', $this->state); // line 776
希望这对将来有帮助
- 马库斯