【问题标题】:Problem displaying xfbml with pyfacebook使用 pyfacebook 显示 xfbml 时出现问题
【发布时间】:2010-10-13 13:52:40
【问题描述】:

我在我的应用程序上使用 pyfacebook,但在显示 xfbml 时遇到问题 例如,我必须使用 iframe 来显示类似按钮或类似框。

有什么奇怪的: 1)在登录页面上正确显示,我只是在其他页面上遇到问题(一旦登录)

2) 我使用的 FB.init 部分是

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>
<script type="text/javascript">FB.init("{{ apikey }}", '/static/xd_receiver.html');

而在 facebook 文档中,参数是:

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
});

3) 当我将 FB.init 更改为官方的 fb 时,应用程序不再工作。 (例如,我无法使用此注销

<a href="#" onclick="javascript:FB.Connect.logoutAndRedirect('/')">Logout</a>

我对 FB 的东西比较陌生,所以我可能会混淆,但我只想在我的应用程序上显示正确的 fbml,而不需要过多地修改服务器端。

【问题讨论】:

    标签: javascript python google-app-engine facebook pyfacebook


    【解决方案1】:

    我认为您将 Facebook 的 old javascript API 与他们的 new javascript API 混淆了。

    正如新 API 页面上所述,使用它来执行初始化:

    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({appId: 'your app id', 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>
    

    对于注销,你会想要这样的东西:

    <a href="#" onclick="javascript:FB.logout(function(response) {window.location.href = '/';})">Logout</a>
    

    【讨论】: