让FB JS SDK在FB画布应用程序上工作的问题

时间:2010-07-12 10:42:31

标签: php javascript facebook

我正在将我的Facebook画布应用程序迁移到使用新的PHP SDK。但是,我在使JavaScript SDK工作时遇到了问题。

我想利用JavaScript SDK中的stream.publish等方法。不幸的是,到目前为止我还没有能够得到任何工作。我在应用程序的index.php文件的标题中有以下内容:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_GB/all.js"></script>
<script>
    FB.init({appId: *);
    FB.ui({
        method: 'stream.publish',
        message: 'Check out this great app!'
    });
</script>

我的应用程序ID已被删除,原因很明显。

我希望上面的内容能够让用户提示将消息发布到他们的流中,但事实并非如此。我甚至可以在Facebook画布应用程序中使用新的JavaScript SDK吗?或者仅保留给iFrame应用程序并仅在网站上使用Facebook Connect?

3 个答案:

答案 0 :(得分:0)

抱歉,您无法在FBML画布应用中使用JavaScript SDK甚至是纯JavaScript。 Facebook创建了自己的名为FBJS的JavaScript替代品,功能有限(出于安全原因)。因此在canvas应用程序中,您只能使用PHP SDK,FBML和FBJS。为了在墙上发布,您可能需要使用PHP SDK。

答案 1 :(得分:0)

确保您正在构建 IFrame Canvas应用程序,而不是 FBML 应用程序。 JavaScript SDK仅适用于IFrame。以下是Canvas上的stream.publish示例:http://apps.facebook.com/fbrelll/fb.ui/stream.publish

答案 2 :(得分:0)

我用以下方法解决了这个问题:

<?php
$attachment = array(
    'name' => 'Attachment name here',
    'href' => 'Attachment URL here',
    'media' => array(array(
        'type' => 'image',
        'src'  => 'Image URL here',
        'href' => 'Link URL here',
    )),
    'caption' => 'Caption here',
);
$action_links = array(array(
    'text' => 'Action link text',
    'href' => 'Action link href',
));
?>
<script type="text/javascript">
<!--
var message = "Your status update here...";
var attachment = <?php echo json_encode($attachment); ?>;
var action_links = <?php echo json_encode($action_links); ?>;
Facebook.streamPublish(message, attachment, action_links);
//-->
</script>

感谢所有回答。