Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExternalInterface.callback不工作_Javascript_Facebook_Actionscript 3_Facebook Graph Api_Externalinterface - Fatal编程技术网

Javascript ExternalInterface.callback不工作

Javascript ExternalInterface.callback不工作,javascript,facebook,actionscript-3,facebook-graph-api,externalinterface,Javascript,Facebook,Actionscript 3,Facebook Graph Api,Externalinterface,我正在尝试做一个Facebook应用程序,在画布页面上运行.swf。我需要获取Facebook用户id,我尝试使用AS3 Facebook Graph Api来获取,但没有成功,所以我一直在尝试通过调用FB.getUserID()来获取id并通过获取Flash电影并使用ExternalInterface类调用其中的方法来公开获得的id。 我试图在swf内的文本字段中跟踪id,但它不起作用,我的意思是id永远无法访问Flash电影 以下是我的Javascript代码: <div id=

我正在尝试做一个Facebook应用程序,在画布页面上运行.swf。我需要获取Facebook用户id,我尝试使用AS3 Facebook Graph Api来获取,但没有成功,所以我一直在尝试通过调用
FB.getUserID()来获取id并通过获取Flash电影并使用ExternalInterface类调用其中的方法来公开获得的id。
我试图在swf内的文本字段中跟踪id,但它不起作用,我的意思是id永远无法访问Flash电影

以下是我的Javascript代码:

   <div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
var swf = null;



      FB.init({ appId: 'APP_ID',            
            status: true, 
            cookie: true,
            xfbml: true,
            oauth: true});

    FB.Canvas.setAutoResize(false);
    FB.Canvas.setSize({ height: 720, width: 600 });
  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     d.getElementsByTagName('head')[0].appendChild(js);
   }(document));
    var uid = "";

   FB.Event.subscribe('auth.statusChange', function(response) {
          if (response.authResponse) {
                 uid = FB.getUserID();
                 console.log('User Id = '+ uid);
          }
          else
          {
              FB.login();
          }
   });


    // Call a flash function exposed with External Interface.
       document.getElementById("chimpInvader").setUID(uid);



   // Custom Facebook Calls.
   // Call getAccessToken() from flash using External Interface,
    function getAccessToken(){
       FB.login(function(response) 
       {
           if (response.authResponse) 
           {
             var access_token =   FB.getAuthResponse()['accessToken'];
             //Log your access token so you can be sure the javascript is worjking,.
             console.log('Access Token = '+ access_token);

              swf = document.getElementById("chimpInvader");

              // Call a flash function exposed with External Interface.
              swf.setAccessToken(access_token);
           }
           else 
           {           
             console.log('User cancelled login or did not fully authorize.');

           }
     }, {scope: ''});


   }
   var movieName = "chimpInvader";
    // Get Swf 
    function getSwf(movieName) {
         if (navigator.appName.indexOf("Microsoft") != -1) {
             return window[movieName];
         } else {
             return document[movieName];
         }
     }

</script>

我非常感谢在这件事上能得到的任何帮助。

您的swf文件是否与您的画布页面位于同一个域中?您是否使用https访问swf文件?如果没有,则可能存在跨站点脚本问题。五周前我也有同样的问题。我花了1天时间解决了我的跨站点脚本问题。

你至少用javascript获得了用户id吗?是的,我通过swfObject像flash变量一样传递了用户id,解决了这个问题,但我真的很想知道如何解决这个问题谢谢你的回答,我的.swf fike与我的画布页面位于同一个域中
package
{
    import flash.display.MovieClip;
    import flash.events.ProgressEvent;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.external.ExternalInterface;

    public class PreloaderMc extends MovieClip
    {
        public static var user_id: String = ""; 
        function PreloaderMc():void
        {
            var mLoader = new Loader();             
            ExternalInterface.addCallback("setUID", getFId);            
            var mRequest:URLRequest = new URLRequest ("chimpInvader.swf");
            mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, oncomplete);
            mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loading);
            mLoader.load(mRequest);
        }
        function getFId(uid):void
        {
            user_id = uid.toString();
            txtId.text = "Method Called!";
            trace("Getting id");
        }

        function oncomplete(e:Event)
        {
            addChild(e.currentTarget.content);
        }
        function loading(evt:ProgressEvent)
        {
            var porcentaje:Number = (evt.bytesLoaded/evt.bytesTotal)*100;
            trace (porcentaje);
            preloadertext.text = String(Math.round(porcentaje));
        }
    }
}