facebook javascript sdk fb_xd_fragment?

后端 未结 9 485
面向向阳花
面向向阳花 2020-12-23 12:20

I am using the facebook javascript sdk to embed a like button in my page.

What is fb_xd_fragment? I see it appends to the end of my url like http://www.example.com/c

相关标签:
9条回答
  • 2020-12-23 12:41

    a1anm's link is good for cleaning up the mess that this causes, but there's a way to prevent it from happening.

    Set 'channelUrl' to a locally hosted channel page. See http://threebrothers.org/brendan/blog/facebook-connect-ie-fb_xd_fragment-iframe/ for details.

    0 讨论(0)
  • 2020-12-23 12:41

    Although the answer above from github seems like an answer to another question, it does work well. UPDATE: link is broken - try http://blog.colnect.com/2010/10/fbxdfragment-bug-workaround.html

    0 讨论(0)
  • 2020-12-23 12:42

    After many weeks of trying to find a solution it looks like what is needed is a custom channel url as mentioned here:

    http://developers.facebook.com/docs/reference/javascript/FB.init

    All I did was create the channel.html file containing this single line:

    <script src="http://connect.facebook.net/en_US/all.js"></script>
    

    Then I added the channelUrl : line so the final result looks like this:

    <div id="fb-root"></div> <script>  
     window.fbAsyncInit = function() {
         FB.init({
           appId  : 'MY APP ID',
           status : true, // check login status
           cookie : true, // enable cookies to allow the server to access the session
           xfbml  : true,  // parse XFBML
          channelUrl  : 'http://www.example.com/channel.html' // custom channel
         });   }; 
    
       (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>
    

    Make sure to add a comma after xfbml : true if it was your last line. I'm not familiar with Javascript so I don't know if I'm taking full advantage of this but I know it prevents the fb_xd_fragment issue and allows FB comments in IE. As far as I can tell, this is the ONLY solution available online. Any further tweaks are welcome.

    0 讨论(0)
  • 2020-12-23 12:47

    The fix for this bug can be found here:

    http://wiki.github.com/facebook/connect-js/custom-channel-url

    0 讨论(0)
  • 2020-12-23 12:52

    I used the approach within script to define the channelUrl to a page on my site, but I still got multiple hits back to that page.

    After watching the resulting traffic with WireShark, I noticed they (Facebook) use a channelUrl for some of their own internal calls, also passing fb_xd_fragment - I instead used that URL for the channelUrl, redirecting it away from my site.

    I have multiple Like buttons on my site using fbml instead of frames, and on IE7, I no longer get a hit back from Facebook with the fb_xd_fragment parameter.

    Not sure if this is best practice but it seems to work.

    I set this value for the channelUrl:

    'http://static.ak.fbcdn.net/connect/xd_proxy.php'

    Hope this helps.

    0 讨论(0)
  • 2020-12-23 12:52

    The Channel hack did not work for me. So I just added above all other content in my PHP file some code that 301 redirects to the URL without the fb_xd_fragment addition:

    $url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    
    if (isset($_GET['fb_xd_fragment'])) {
    $url = str_replace("?fb_xd_fragment=","",$url);
    header( "HTTP/1.1 301 Moved Permanently" ); 
    header("Location: {$url}");
    exit();
    }
    
    0 讨论(0)
提交回复
热议问题