я использую логин facebook на своем веб-сайте
скачанный facebook php sdk source из https://github.com/facebook/facebook-php-sdk
для входа в facebook, следующие шаги приведены в http://25labs.com/tutorial-integrate-facebook-connect-to-your-website-using-php-sdk-v-3-xx-which-uses-graph-api/
на первом экземпляре он никогда не входит в систему, только в состоянии войти через facebook после двух попыток. Ошибка CSRF появляется каждый раз, когда я пытаюсь войти.
на копании в коде (base_facebook.php) далее узнал, что в первом экземпляре входа: состояние $this->state
не равно $server_info['state']
, следовательно, ошибка CSRF.
попытался найти решение этой ошибки при просмотре различных сообщений, однако, не удалось. пожалуйста, предложите решение. благодаря
У меня тоже была эта пробема.
На моем сайте я также установил переменную cookie и $ _SESSION именем «state». Это вызвало конфликт с классом Facebook, так как класс FB использует одно и то же имя ключа.
Ниже приведена моя резолюция для других с этой проблемой:
Facebook PHP SDK v3.2.3
То, что собиралось сделать, – это обмен некоторыми примерами «состояния» с «fb_state».
EDIT (Marcus): Я также поменял все экземпляры $ _REQUEST ['state'] с $ _GET ['state']. Это заставит приложение получать значение «state» из авторизации по умолчанию для URL-адреса, поскольку $ _REQUEST подберет любой сохраненный файл cookie состояния, который у вас уже может быть. И в моем случае был один.
Например: http://www.example.com/?code=AQA5cjNZ8iuZ…& state = 48a4a0a89ebb0c568f713fabebcd4899 # =
Мой ранее сохраненный «state» cookie из-за предыдущей активности на моем собственном сайте: ON
echo $_REQUEST['state']; // produces 'ON' echo $_GET['state']; // produces 48a4a0a89ebb0c568f713fabebcd4899
На моем сайте. И я не собирался менять метод моего хранилища файлов cookie и переменных сеанса на сервере только для FB SDK.
Не меняя $ _REQUEST на $ _GET, функция getCode () вернет false, потому что:
if ($this->state === $_REQUEST['state']) {
Не разрешит. Фактическое сравнение было бы 48a4a0a89ebb0c568f713fabebcd4899 против «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
SRC / base_facebook.php
$state = $this->getPersistentData('fb_state'); // line 263 $this->clearPersistentData('fb_state'); // 730 $this->setPersistentData('fb_state', $this->state); // line 776
Надеюсь, это поможет кому-то в будущем.