Facebook JS API错误

时间:2011-09-07 01:47:01

标签: javascript facebook facebook-javascript-sdk facebook-php-sdk

我正在尝试创建一个测试应用程序,源代码如下(index.php):

<?php
include_once 'facebook/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'YYYYYYYYYYYYYYYY',
  'secret' => 'XXXXXXXXXXXXXXXXXXXXXX',
));

$user = $facebook->getUser();

if($user)
{
  try
  {
    $user_profile = $facebook->api('/me');
  }
  catch(FacebookApiException $e)
  {
    error_log($e);
    $user = null;
  }
}

if( ! $user)
{
  echo "<script type=\"text/javascript\">top.location.href='" . $facebook->getLoginUrl(array(
    'scope' => 'publish_actions,publish_stream',
    'redirect_uri' => 'http://apps.facebook.com/MYAPPURL/'
  )) . "'</script>";
  exit;
}
?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>TribusWar</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="http://connect.facebook.net/en_US/all.js#appId=YYYYYYYYYYYYYYYY&amp;xfbml=1"></script>
</head>
<body>
<input type="button" value="Compartilhar" id="xxxxx" />
</body>
<script type="text/javascript">
document.getElementById('xxxxx').addEventListener('click', function()
{
  FB.ui({
    method: 'feed',
    display: 'iframe',
    name: 'Dialog Name',
    caption: 'Caption for dialog',
    description: 'Lorem ipsum dolor sit amet...'
  }, function()
  {
    alert(arguments);
  });
}, false);
</script>
</html>

使用此代码,我想在页面上显示一个按钮,在单击时会触发发布对话框。当页面加载时,它会生成错误,单击该按钮时会发生另一个错误,并且不显示该对话框:

Firebug Console http://img17.imageshack.us/img17/8347/capturadetelayo.png

我不知道这有什么问题。我不知道是否真的有必要使用publish_stream权限,因为我正在尝试使用facebook对话框。谁能帮帮我?

2 个答案:

答案 0 :(得分:2)

正如Nava Salvatore(和调试器控制台)所说,你需要添加:

<div id="fb-root"></div>

代码的<body>内的某处。此外,您的最终<script>块应位于</body>标记之前(按照惯例)。您只需显示一个对话框就不需要任何其他权限;

答案 1 :(得分:1)

尝试添加

<div id="fb-root"></div>

之前<script