Использование Facebook Javascript SDK в приложении iframe - PullRequest
1 голос
/ 18 апреля 2011

Мне интересно, как использовать javascript facebook в приложении Canvas (которое использует facebook c # sdk).

Я хочу отправить пользователя в форму запроса с помощью вызова типа

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

На моей главной странице сайта перед тегом end body у меня есть следующий код:

<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.

Он загружается как собственный веб-сайт.

Какой лучший способ интегрировать js sdk в такое приложение canvas (ASP.NET MVC 2)?

1 Ответ

1 голос
/ 06 мая 2011

Я только что попробовал ваш сценарий в моем приложении Canvas.Я попробовал и то, и другое щелкнуть ссылку «Отправить запросы приложений» как по URL-адресу приложения http://apps.facebook.com/myappname, так и по URL-адресу моего сервера: 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 ...не знаю, надеюсь, это поможет ...

...