在iframe应用程序中使用facebook javascript sdk

时间:2011-04-18 14:56:40

标签: c# asp.net-mvc facebook iframe facebook-c#-sdk

我想知道如何在画布应用程序中使用facebook javascript(使用facebook c#sdk)。

我想将用户发送到请求表单,其中包含

之类的调用
FB.ui({
   method: 'apprequests',
   message: 'You should learn more about the',
}, Log.info.bind('send-to-many callback'));

在我的网站母版页中,我在结束正文标记之前有以下代码:

<div id="fb-root">
</div>
<script src="http://connect.facebook.net/en_US/all.js" type="text/javascript"></script>
<script type="text/javascript">
    FB.init({
        appId: 'AppId', cookie: true,
        status: true, xfbml: true
    });

</script>

但不知何故,它打破了整个应用程序。该应用程序不再在facebook的iframe中。

它只是作为自己的网站加载。

在这样的画布应用程序中集成js sdk的最佳方法是什么(ASP.NET MVC 2)?

1 个答案:

答案 0 :(得分:1)

我刚刚在我的Canvas App中尝试了你的场景。 我同时尝试从应用网址http://apps.facebook.com/myappname和我的服务器网址http://myserver/mypage.aspx点击我的“发送应用请求”链接。对我来说,他们都工作。当点击该按钮时,我得到了对话框,我可以邀请我的朋友使用该应用程序(我没有在Canvas之外重定向)。

我不知道您的记录器(Log.info.bind('send-to-many callback'));)是如何工作的,但我会尝试将其从您的代码中删除。

以下是我在MasterPage中使用的代码:

<body>
<div id="fb-root"></div>
    <script type="text/javascript">
        window.fbAsyncInit = function () {
            FB.init({ appId: '<%= ConfigurationManager.AppSettings["fbAppId"].ToString() %>',
                status: true,
                cookie: true,
                xfbml: true
            });

            //Autoresize iFrame                
            FB.Canvas.setAutoResize();
        };
    (function () {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js#xfbml=1';
        document.getElementById('fb-root').appendChild(e);
    } ());

function sendAppRequest() {
    FB.ui(
            {
                method: 'apprequests',
                message: 'Learn more'
            }
            );
        }
    </script>
    <div id="content">
        <a href="javascript:void(0);" onclick="sendAppRequest()">Send App Requests</a>
    </div>
</body>

也许对我来说它有用,因为我使用fbAsyncInit ...不知道,希望这有帮助......