FBJS AJAX.post не работает после диалога разрешений - PullRequest
0 голосов
/ 21 февраля 2011

У меня проблемы с приложением facebook, основанным на flash, который общается с PHP с помощью FBJS-моста. Когда кто-то использует приложение в первый раз, его / ее спрашивают о различных разрешениях. После этого флеш связывается с PHP через ajax, но запрос никогда не отправляется. При обновлении страницы все работает без проблем. Если вы удалите приложение в настройках конфиденциальности, обновите страницу и попробуйте снова - такая же ошибка возникает. Если вы разрешите приложение, обновите страницу, на другой вкладке удалите приложение и запустите приложение на предыдущей вкладке - у пользователя запрашиваются разрешения, но после разрешения приложения все работает.

Это код FBJS

function openPermissions(){
    Facebook.showPermissionDialog(/*permissions string*/, permissionOnDone);
}
function permissionOnDone(perms){
    if (!perms) {
        document.getElementById("indexswf").callSWF('noallow');
    } else {
        document.getElementById("indexswf").callSWF('allow');
    }
}

function ajaxCall(url,parameters){
    var params = {};
    for(var i=0;i<parameters.length;i+=2){
        params[parameters[i]]=parameters[i+1];
    }

    ajax = new Ajax();
    ajax.requireLogin = true;
    ajax.responseType = Ajax.RAW;
    ajax.ondone = function(data){
        document.getElementById("indexswf").callSWF('parseAjax', data);
    }

    ajax.post('http://the.url.to/the_real_server/not_to_the_fb_url/'+url,params);
}

openPermissions вызывается для отображения диалога разрешений, а при разрешении flash вызывается функция allow (). Во flash, allow () вызывает функцию JS ajaxCall (), которая должна выполнить запрос ajax. Но ajax.post никогда не отправляет запрос. Я знаю это наверняка, потому что flash-функция parseAjax никогда не вызывалась, а также инструменты отладки в браузерах не показывают никаких запросов ajax. URL и параметры такие же, как когда он работает. Нет ошибок Flash или JS ... Кто-нибудь имеет представление, что здесь не так? Может быть, ошибка в Facebook снова, так как все это работало несколько дней назад ...

1 Ответ

0 голосов
/ 21 февраля 2011

ajax.requireLogin = true должно быть установлено в false по какой-то причине

...