0

我试图创建一个测试应用程序的源是以下(的index.php):Facebook的JS API错误

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

由于纳瓦萨尔瓦多(和调试器控制台)说,你需要添加:在你的代码的<body>某处

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

。此外,您的最终<script>块应该在</body>标记之前(每个约定)。您不需要任何额外的权限来显示对话框;不需要publish_stream

+0

此外,我已经添加了'link'和'picture'的选项 – Wanderson

+0

反正是有没有办法简单地添加用户名到对话框文本? – Wanderson

+0

并不是说我知道了我的头顶部;但是这是一个不同的问题。 –

1

尝试添加

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

<script