facebook login problem - решен

vasilev

Registered
здравейте ,
сигурно доста хора използват системата за вход през FB .
попаднах на тази статия -> линк .

всичко е ок , но когато се логна ми редиректва към ..index.php?state=klajsklajslkasa&code=aljsklasa

от тук произлиза и грешката :

CSRF state token does not match one provided .

попрочетох доста статии и всичко е изпълнено по тях :)
направих и проверка в линка ако не са празни state и code и ако потребителя е логнат - то да рефрешва на ? тоест да ги премахна ..

но при вход ми се появява тази грешка пак тоест явно не трябва това да се прави :)

моля ако някой знае нещо по въпроса - как да се редиректне към чист url - index.php - да сподели .
 
PHP:
$params = array(
  'scope' => 'read_stream, friends_likes',
  'redirect_uri' => 'https://www.myapp.com/post_login_page'
);

$loginUrl = $facebook->getLoginUrl($params);
 
и аз така съм го направил ..
дава си ми тези данни и това си е . а накрая слага и #_=_
в статиите и в описанието пише че си трябват само при първо зареждане но то хубаво че трябват ама да не бие грешка :)
 
Тогава си прегледай кода. Обикновено този проблем се получава от многократно викане на getLoginUrl, като всеки път се генерира различен токен и съответно като се върне към апликейшъна ти дава грешка защото вече има нов токен.

Или ако ползваш .htaccess виж дали правилно ги предава.
 
и това го прочетох и проверих :)
кодът е същият като от Github

https://github.com/facebook/php-sdk

просто съм променил моя ключ .. в папка example ..

понеже сега загрях че аз всъшност подавам заявката след логин през fb към login.php а от след като създаде сесия то редиректва към друг Index.php то първо ще го досътворя и ще видя дали има драми :)
 
намерих решение и понеже не виждам някъде в интернет да го пише - го записвам за да е от полза.
във base_facebook.php има следното :

PHP:
protected function getCode() {
    if (isset($_REQUEST['code'])) {
      if ($this->state !== null &&
          isset($_REQUEST['state']) &&
          $this->state === $_REQUEST['state']) {

        // CSRF state has done its job, so clear it
        $this->state = null;
        $this->clearPersistentData('state');
        return $_REQUEST['code'];
      } else {
 ->     // self::errorLog('CSRF state token does not match one provided.');
        return false;
      }
    }

тоест коментира се реда да не изкарва грешка и това е :)
 
Това че си го закоментирал, не значи че грешката не съществува вече.

Пак ти казвам, проблема е в кода ти някъде.
 
кода е взет от github тоест всички го ползват :)
аз нищо не съм добавял а просто тествах .

е че има грешка има но мен не ме вълнува защото няма да ми пълни лога :)
 
Братле, кода който си свалил е outdated, не прочете ли какво пише горе

We have created a new repository for this project: https://github.com/facebook/facebook-php-sdk. Please update anything you have pointing at this repostory to this location before April 1, 2012.

Най - добре е да си свалиш СДК-то от официалната страница на фб.
 
да де аз от тук го дръпнах :)
от facebook редиректва към github тоест към този който съм дръпнал .

карай .. няма error лог няма драми :)
 

Back
Горе