XD代理Facebook

时间:2011-01-06 13:37:43

标签: facebook

我正在使用facebook connect登录我的网站。

在我的html页面中,我写了代码:

<html>    
<head>    
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />      
<title>Test JOpenID  </title>    
</head>    
<body>
  <div id="fb-root"></div>          
<script src="http://connect.facebook.net/en_US/all.js"></script>          
<script>

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

</script>      
<fb:login-button perms="email,user_checkins">
     Login with Facebook
  </fb:login-button>

</body>
</html>

因此,当我点击“使用Facebook登录”按钮时,会弹出一个窗口并要求填写用户名和密码。直到这个时候一切正常。单击允许按钮进入目标网站时问题仍然存在。弹出窗口也会出现并消失。窗口的直到XD代理,在网址是::

http://static.ak.fbcdn.net/connect/xd_proxy.php#cb=f183a80ac008141&origin=http%3A%2F%2F174.129.214.219%2Fff715e2f856e19&relation=opener&transport=flash&frame=f1d4f8afdf94ebe&result=%7B%22perms%22%3A%22email%2Cuser_checkins%22%2C%22selected_profiles%22%3A100001492618815%2C%22session%22%3A%22%7B%5C%22session_key%5C%22%3A%5C%222.pRXlnxq8Ig6QwZyJsG732w__.3600.1294326000-100001492618815%5C%22%2C%5C%22uid%5C%22%3A%5C%22100001492618815%5C%22%2C%5C%22expires%5C%22%3A1294326000%2C%5C%22secret%5C%22%3A%5C%225pe7qxMU_7DitJucmcyftA__%5C%22%2C%5C%22access_token%5C%22%3A%5C%22180065668680582%7C2.pRXlnxq8Ig6QwZyJsG732w__.3600.1294326000-100001492618815%7C_QjDI7eTUD32QVvapbsqxn-r4DE%5C%22%2C%5C%22sig%5C%22%3A%5C%22aa66a1d8b234ebe863e386bb8a6520e7%5C%22%7D%22%7D

根据我的要求,我需要在允许facebook之后才允许我进入我已经注册的目的地网站。但它只在一个窗口上,并在一秒钟内消失。

问题是什么以及如何解决详细说明......

由于

3 个答案:

答案 0 :(得分:3)

不要使用

FB.init({ apiKey: 'API_KEY' });

并使用

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

答案 1 :(得分:0)

要在Opera中修复它,只需在FB.init()之后执行以下操作:

if($.browser.opera ) // it uses jQuery library here!
{
   FB.XD._transport="postmessage";
   FB.XD.PostMessage.init();
}

答案 2 :(得分:0)

我在IE9中遇到过同样的问题,它似乎源于升级到Flash Player 10.自从找到open bug at Facebook覆盖它以来,我一直没有尝试修复它。但是Henson发布了an answer,为我修复了它。在我的网站主人的JavaScript中,我删除了行

    FB.UIServer.setLoadedNode = function (a, b) { 
    //HACK: http://bugs.developers.facebook.net/show_bug.cgi?id=20168
    FB.UIServer._loadedNodes[a.id] = b;
    };

现在它有效。 (N.B.我没有检查IE8是否发布这些线路是为了克服回报。)