如何调整facebook iframe应用程序窗口的大小

时间:2011-08-12 07:56:05

标签: php html facebook facebook-javascript-sdk

我有一个只能通过粉丝页面运行的Facebook应用程序 转到app:http://apps.facebook.com/imageassistant/(你应该有一个粉丝页来检查这个)

我需要使用固定宽度值尽可能多地增加画布页面的高度(如果您运行我的应用程序,您会看到)

我有一个index.php文件,其中包含fbmain.php文件

//index.php
<?php
 include_once "fbmain.php"; // this file do all authentication parts
//some codes
?>  

我需要在我的应用中调整所有页面的大小 我从facebook developer page

找到了与此相关的一些代码
window.fbAsyncInit = function() {
  FB.Canvas.setSize();
}

// Do things that will sometimes call sizeChangeCallback()

function sizeChangeCallback() {
  FB.Canvas.setSize();
}

和这个

FB.Canvas.setSize({ width: 640, height: 480 }); // Live in the past

但我不知道如何在我的应用程序中使用这些代码,我应该把它们放在哪里? 我是否已将此代码放入应用程序中的每个文件中? 我是否还必须更改开发人员应用页面中的应用设置? (IFrame大小显示滚动条或自动调整大小之前)
任何人都可以发表完整的答案,包括我应该把它放在哪里?
注意:我使用的是php sdk

2 个答案:

答案 0 :(得分:3)

  

但我不知道如何在我的应用程序中使用这些代码,我应该把它放在哪里?

有许多有效的方法可以做到以下几点:

<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
    <head>
        <!-- YOUR HEADER CONTENT -->
    </head>
    <body>
        <div id="fb-root"></div>

        <!-- You Page Content HERE -->

        <script>
          window.fbAsyncInit = function() {
            FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});
            FB.Canvas.setSize();
          };
          (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>
    </body>
</html>
  

我是否已将此代码放入应用中的每个文件中?

如果您希望iFrame调整大小,则需要在每个页面中包含此类代码。

  

我是否还必须更改开发者应用页面中的应用设置?

为此,您需要在开发者应用程序中选择自动调整大小选项。


如果您的内容是动态的,那么您还想考虑FB.Canvas.setAutoResize

你也可能会遇到FB.Canvas.setSize过早触发的问题,在这种情况下你可以使用setTimeout来延迟它 - 从经验我发现200ms是最佳的:

          window.fbAsyncInit = function() {
            FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});
            window.setTimeout(
                function() {
                    FB.Canvas.setAutoResize();
                },
                200
            );
          };

答案 1 :(得分:1)

只需在项目中加入javascript SDK文件即可。

然后使用script标签src属性在index.php文件和index.php中包含上述文件,编写此代码:

<?php
       echo '<script type="text/javascript"> 
        window.fbAsyncInit = function() {
            FB.init({appId:'Your AppID here', status: true, cookie: true, 
                        xfbml: true});
            FB.Canvas.setSize({ width: 640, height: 720 });
          };
    </script>';                             
?>

这会将画布大小设置为指定的宽度和高度     您应用中的网页。