У меня есть приложение facebook, которое подключается к Facebook через PHP-SDK.
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET_KEY,
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
Все хорошо, я открываю браузер и не отвечаю на мое приложение.Через некоторое время я пытаюсь отправить форму в приложении через ajax.Кажется, сессия недействительна?Facebook снова авторизует мое приложение, загружает URL-адрес ajax в адресную строку браузера и присоединяет новый параметр сеанса к этому URL-адресу и прерывает работу приложения.
Могу ли я что-нибудь сделать, чтобы притвориться, что Facebook «перезагрузил» или прошелдействие ajax / form в адресной строке браузера?Перед обработкой каждого запроса я проверяю, активен ли пользователь или нет, в этом может быть проблема?
$user = $facebook->getUser();
if ($user != 0) {
if($this->userProfile == null){
try {
// Proceed knowing you have a logged in user who's authenticated.
$this->userProfile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
}else{
$this->userProfile = null;
}
if ($this->userProfile != null) {
$filterChain->run();
} else {
$loginUrl = $facebook->getLoginUrl(
array('scope' => 'publish_stream','redirect_uri' => 'REDIRECT_URI'));
}
echo("<script> top.location.href='" . $loginUrl . "'</script>");
Стоит ли использовать другой подход?Заранее спасибо!