Php 调用Facebook.showPermissionDialog后,Facebook Ajax.post失败

Php 调用Facebook.showPermissionDialog后,Facebook Ajax.post失败,php,ajax,facebook,fbjs,Php,Ajax,Facebook,Fbjs,我有一种情况,我打电话给Facebook.showPermissionDialog('offline_access'),然后我打了一个ajax.post电话。如果之前调用了权限对话框,则ajax.post调用将失败。但在未调用权限对话框之前,它会成功。有人知道这个对话框和ajax.post之间有什么关系吗 如果您想直接查看问题,请访问我的应用程序(这是一个FACEBOOK应用程序,因此您必须授权访问您的个人资料) 下面是调用Facebook.showPermissionDialog()的代码:

我有一种情况,我打电话给Facebook.showPermissionDialog('offline_access'),然后我打了一个ajax.post电话。如果之前调用了权限对话框,则ajax.post调用将失败。但在未调用权限对话框之前,它会成功。有人知道这个对话框和ajax.post之间有什么关系吗

如果您想直接查看问题,请访问我的应用程序(这是一个FACEBOOK应用程序,因此您必须授权访问您的个人资料)

下面是调用Facebook.showPermissionDialog()的代码:


var dialog=新建dialog().showMessage(“持续授权”,“欧洲各地的Rails将向您的帐户请求“持续授权”。如果您不给我们持续授权,Facebook最终将导致您的游戏超时,从而丢失所有游戏信息。通过授予此授权,Facebook将不会导致您的游戏超时。这是唯一的原因我们需要这项授权。”);
dialog.onconfirm=函数(){
showPermissionDialog('offline_access',null,false,null);
}
[
下面是调用ajax.post的FBJS代码:

    switch(state) {
      case START_SET_CITY:
//new Dialog().showMessage('test', 'START_SET_CITY');
//console.time('start_set_city');
        ajax.responseType = Ajax.JSON;
        ajax.ondone = function(data) {
//console.time('ondone');
//new Dialog().showMessage('in ajaxSetCity.ondone');
//new Dialog().showMessage('test', 'city=' + dump(data.city, 3) + '::: train=' + dump(data.train, 3));
          drawCityAjax(data.city, data.train);
          setVarBalance(data.funds);
          ajax.responseType = Ajax.JSON;
          ajax.post(baseURL + '/turn/start');
//console.timeEnd('ondone');
        };
        ajax.post(baseURL + '/turn/start-set-city', param); // <=== THIS IS THE AJAX CALL THAT FAILS
        var actionPrompt = document.getElementById('action-prompt');
        var innerHtml = '<span><div id="action-text">Build Track: Select a city where track building should begin</div>'+
                        '<div id="action-end">'+
                        '<input type="button" value="End Track Building" id="next-phase" onClick="moveTrainAuto();" />'+
                        '</div></span>';
        actionPrompt.setInnerXHTML(innerHtml);
        var btn = document.getElementById('next-phase');
        btn.addEventListener('click', moveTrainAutoEvent);
        state = TRACK_CITY_START;
//console.timeEnd('start_set_city');
        // get funds balance from backend and call setVarBalance()
        break;
开关(状态){
案例开始城市:
//新建对话框().showMessage('test','START_SET_CITY');
//控制台时间(“开始设置城市”);
ajax.responseType=ajax.JSON;
ajax.ondone=函数(数据){
//控制台时间('ondone');
//新建对话框().showMessage('in ajaxSetCity.ondone');
//新建对话框().showMessage('test','city='+dump(data.city,3)+'::train='+dump(data.train,3));
drawCityAjax(data.city,data.train);
setVarBalance(数据、资金);
ajax.responseType=ajax.JSON;
post(baseURL+'/turn/start');
//console.timeEnd('ondone');
};
ajax.post(baseURL+'/turn/start set city',param);//I如果ajax.requireLogin参数为true。由于您已经在请求扩展权限,可以将其设置为false。下面的代码适用于我:

Facebook.showPermissionDialog("publish_stream", function(permissions) {

    var form_data = form.serialize();

    var ajax = new Ajax();
    ajax.responseType = Ajax.RAW;
    ajax.requireLogin = false;
    ajax.ondone = function(data) {
        console.log("onerror")            
    };
    ajax.onerror = function() {            
        console.log("onerror")            
    };

    ajax.post("http://foo.example.com/submit", form_data);

    return false;
});
Facebook.showPermissionDialog("publish_stream", function(permissions) {

    var form_data = form.serialize();

    var ajax = new Ajax();
    ajax.responseType = Ajax.RAW;
    ajax.requireLogin = false;
    ajax.ondone = function(data) {
        console.log("onerror")            
    };
    ajax.onerror = function() {            
        console.log("onerror")            
    };

    ajax.post("http://foo.example.com/submit", form_data);

    return false;
});