我有一個Facebook應用程序,它通過PHP-SDK向facebook發送內容。在iframe應用程序中的Facebook會話打破阿賈克斯調用
$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將授權我的應用程序再次加載到瀏覽器地址欄的ajax url,並附加到該網址的新會話參數,並打破了應用程序。
有什麼我可以做的假裝Facebook「重新加載」或傳遞給瀏覽器地址欄的Ajax /表單動作?在處理每個請求之前,我會檢查用戶是否仍處於活動狀態,這可能是問題所在?
$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>");
我應該使用其他方法嗎? 在此先感謝!