开发者

FB JS SDK: init not working?

i have copied this code from the FB.init documentation:

    <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>

...
     <!-- facebook JS SDK init -->
            <div id="fb-root"></div>
            <script>
                window.fbAsyncInit = function() {
                    FB.init(
                    {
                        appId: '<?= FacebookHelper::FACEBOOK_APP_ID ?>',
                        status: true,
                        cookie: true,
                        xfbml: true
                    });
                };

                (function() {
                    var e = document.createElement('script');
                    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
                    e.async = true;
                    document.getElementById('fb-root').ap开发者_高级运维pendChild(e);
                }());
            </script>

i placed it just before my </body> tag (as they recommend in the documentation), but i am getting this weird error (i can see via firebug):

b is undefined
[Break on this error] if(!window.FB)FB={};FB.forEach=functio...B.TypeLoader.subclass,FB.TypeLoader); 

now, at first, i thought this must be a bug with my code, but the more i think about it, the more i remember hearing about some problems between firebug and facebook javascript. is that the problem, or am i forgetting something?


I think it is because you are including the older version of Facebook Connect. You don't need to include it with the newer JS SDK:

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>

Also, Facebook recommends placing the asynchronous loading code right after the opening body tag, such as (but it's your call):

<body>
    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId  : 'YOUR APP ID',
          status : true, // check login status
          cookie : true, // enable cookies to allow the server to access the session
          xfbml  : true  // parse XFBML
        });
      };

      (function() {
        var e = document.createElement('script');
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>
    ...
    ...
</body>

Firebug doesn't seem to be the issue here.


I had a similar problem with FB>UI calls for feed dialogues. My page was loaded via ajax and the UI does not poup. I just disabled the FireBug and it started to work amazingly!. Guess the FB is ambiguous between FireBug vs FaceBook for Mozilla.


Thanks all this issue is due to 
<form id="fbform"></form>
<div id="fb-root"></div> is not included before script. you guys can try this code as i wrote.

div id="fb-root"></div>
    <script>
  //initializing API
  window.fbAsyncInit = function() {
    FB.init({appId: '298295206936650', status: true, cookie: true, xfbml: true});
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +'//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
<script>
  //your fb login function
  function fblogin(action) {alert('dd');
      if(action == 'undefined'){
          var action = 'fb_login';
          }
      FB.login(function(response) {
       if (response.authResponse) {
         console.log('Welcome! Fetching your information.... ');
         FB.api('/me', function(response) { 
         var user = response;
         //alert(user.birthday)
         console.log(response)
         //alert(user.id+'---'+user.email);
         var picture_fb='https://graph.facebook.com/'+user.id+'/picture?width=100&height=100';
        // alert(picture_fb);
         if (user.current_location != null) {
            var city = user.current_location['city'];
            var country = user.current_location['country'];
         }else{
            var city = '';
            var country = '';
         }
         if(action == 'update_fb_pic'){

             var email_user= '<?=$this->session->userdata('user_id');?>';
             }else{

                 if(user.email !='' && user.email !=''){
                    var email_user= user.email;
                 }else{
                     var email_user= '';
                 }
            }

          $.ajax({
             type: 'POST',
             url: "<?php echo site_url()?>front/ajax_fb_login",
             data: "action="+action+"&fb_user_id="+user.id+"&username="+user.name+"&username="+user.name+"&first_name="+user.first_name+"&last_name="+user.last_name+"&gender="+user.gender+"&email="+email_user+"&avatar="+picture_fb+"&dob="+user.birthday,
             success: function(msg){
                //alert(msg);
                //window.parent.document.location.reload();
                window.location= "<?php echo site_url()?>profile"
                //$("#fbform").submit();
            }
          });
   });
       } else {
         console.log('User cancelled login or did not fully authorize.');
       }
     }, {   scope: 'email,user_birthday,status_update,read_stream,publish_stream'});



  }

</script>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜