我正在将我的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?
答案 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>
感谢所有回答。