【问题标题】:Using facebook javascript sdk in an iframe application在 iframe 应用程序中使用 facebook javascript sdk
【发布时间】:2011-04-18 14:56:39
【问题描述】:

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

我想通过类似

的调用将用户发送到请求表单
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)的最佳方式是什么?

【问题讨论】:

  • FB.ui()的默认动作是打开一个弹出对话框窗口来发送请求。您以某种方式突破了 facebook iframe,可能在某处的回调中使用了 top.location.href。没有额外的步骤可以将 js sdk 用于我知道的画布应用程序。

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


【解决方案1】:

我刚刚在我的 Canvas 应用程序中尝试了您的方案。 我尝试从应用程序 URL http://apps.facebook.com/myappname 和我的服务器 URL:http://myserver/mypage.aspx 中单击我的“发送应用程序请求”链接。对我来说,他们都工作。单击该按钮时,我会看到对话框,我可以邀请我的朋友使用该应用程序(我没有被重定向到画布之外)。

我不知道您的记录器 (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...不知道,希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多