Ошибки API JS Facebook

Я пытаюсь создать тестовое приложение, источник следующий (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

Я не знаю, что с этим не так. Я не знаю, действительно ли необходимо разрешение publish_stream, поскольку я пытаюсь использовать диалоговое окно facebook. Может кто-нибудь помочь мне?


person Wanderson Silva    schedule 07.09.2011    source источник


Ответы (2)


Как говорит Нава Сальваторе (и консоль отладчика), вам нужно добавить:

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

где-то в <body> вашего кода. Кроме того, ваш последний блок <script> должен быть перед тегом </body> (согласно соглашению). Вам не нужны никакие дополнительные разрешения для простого отображения диалога; publish_stream не нужен.

person Jimmy Sawczuk    schedule 07.09.2011
comment
Кроме того, я добавил link и picture к параметрам - person Wanderson Silva; 07.09.2011
comment
В любом случае, есть ли способ просто добавить имя пользователя в текст диалога? - person Wanderson Silva; 07.09.2011
comment
Не то, чтобы я знал об этом навскидку; но это другой вопрос. - person Jimmy Sawczuk; 07.09.2011

попробуйте добавить

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

до <script

person Nava Salvatore    schedule 07.09.2011