Facebook API се връща към обратно извикване и понякога /me call не работи

Използвам PHP Facebook API за потока на влизане. В повечето случаи това успява. Тук и там (бих изчислил 15%), след връщане към URL адреса за обратно извикване, когато се обаждате на

$url = 'me?fields=username,id';
$data = $this->facebook->api($url);

Вместо да получа данните, получавам това изключение:

An active access token must be used to query information about the current user

Може ли това да е свързано по някакъв начин с някакво грешно session боравене от моя страна?


person Noam    schedule 08.01.2014    source източник
comment
Можете ли да възпроизведете ситуацията, когато се провали? Може би това се случва, когато някой не приеме разрешенията по време на процеса на влизане?   -  person madebydavid    schedule 08.01.2014
comment
забелязах загуба на данни от FB след няколко минути като 5-6, когато не взаимодействам с FB или неговото приложение за iframe. това, което правя, е да взема данните от facebook веднъж и да ги съхранявам в $_SESSION var. отсега нататък използвам само бисквитката, защото не губите информацията й, докато не я деактивирате или затворите раздела на браузъра.   -  person ggzone    schedule 08.01.2014
comment
@madebydavid Не успях да възпроизведа ситуацията. Получих няколко оплаквания от потребители и след това добавих регистър на грешките, който ми показа тази грешка   -  person Noam    schedule 08.01.2014
comment
@ggzone това се случва веднага след влизане. Всъщност след това запазвам дълготрайния токен и го използвам. Каква променлива запазвате в сесията?   -  person Noam    schedule 08.01.2014
comment
Първо бих добавил някакъв код, за да проверя грешката, върната от потока за влизане във FB, за да проверя дали проблемът се случва само за потребители, които не приемат разрешенията - вижте подробностите за четене на грешката на страницата redirect_uri тук - developers.facebook.com/docs/facebook-login/ ако това не работи, бих излязъл от потребителските агенти, за да видя дали има модел (може би не работи за един браузър) и след това, ако това не даде никакви резултати, бих помислил дали да опитам отново за удостоверяване чрез изпращане потребителят обратно към потока за влизане - има максимален брой повторни опити.   -  person madebydavid    schedule 08.01.2014
comment
цялата информация, дадена от някое приложение например. след приложението за facebook можете да получите данните с класа facebook в API -› $facebook-›getUser()... това е, което съхранявам в сесията   -  person ggzone    schedule 08.01.2014
comment
@madebydavid направи, както предложихте. Все още понякога се вижда, че в $_GET няма доказателства за грешка, че потребителят не е приел разрешения, и ?code и &state изглеждат добре. Все пак /me се връща An active access token must be used to query information about the current user Някаква идея?   -  person Noam    schedule 08.01.2014
comment
Странно, може би FB SDK не разменя кода за токен за достъп в определени ситуации - опитайте първо да извикате $this->facebook->getUser() преди извикването ->api - това трябва да го принуди да размени кода за токен за достъп.   -  person madebydavid    schedule 08.01.2014
comment
Може да се наложи нулиране на маркера за достъп, преди да се обадите stackoverflow.com/questions/20918712/   -  person Abhik Chakraborty    schedule 10.01.2014