我开始构建一个Facebook扩展应用程序。我得到了api auth部分的工作。 现在,当我使用javascript api请求任何内容时,我无法做到。
例如:
<div id="profile_pics"></div>
<script type="text/javascript">
var widget_div = document.getElementById("profile_pics");
FB.ensureInit(function () {
FB.Facebook.get_sessionState().waitUntilReady(function() {
FB.Facebook.apiClient.friends_get(null, function(result) {
var markup = "";
var num_friends = result ? Math.min(5, result.length) : 0;
if (num_friends > 0) {
for (var i=0; i<num_friends; i++) {
markup +=
'<fb:profile-pic size="square" uid="'+result[i]+'" facebook-logo="true"></fb:profile-pic>';
}
}
widget_div.innerHTML = markup;
FB.XFBML.Host.parseDomElement(widget_div);
});
});
});
</script>
以上示例代码应显示我朋友的方形缩略图。它只显示方形拇指(BLANKS)上面有facebook标志。我哪里错了?
供参考: 我有位于localhost的文件。在facebook应用程序设置中,我将connect url作为'localhost / dir / index.html'url的地址。有什么我做错了吗? 请帮帮我。
修改 这是我用来登录的代码:
<script type="text/javascript">
//<![CDATA[
var api_key = 'myapikey';
var channel_path = '/xd_receiver.htm';
FB_RequireFeatures(["Api"],
function(){
// Create an ApiClient object, passing app's API key and
// a site relative URL to xd_receiver.htm
FB.Facebook.init(api_key, channel_path);
var api = FB.Facebook.apiClient; // require user to login
api.requireLogin(function(exception)
{
FB.FBDebug.logLevel=1;
FB.FBDebug.dump("Current user id is " + api.get_session().uid);
// Get friends list
//5-14-09: this code below is broken, correct code follows //
//api.friends_get(null, function(result){
// Debug.dump(result, 'friendsResult from non-batch execution ');
// });
api.friends_get(new Array(), function(result, exception){
FB.FBDebug.dump(result, 'friendsResult from non-batch execution ');
});
});
});
//]]>
答案 0 :(得分:3)
您发布的示例代码工作正常......我只是在我的一个开发FB应用程序中测试它,它创建了我朋友的个人资料图片。
您可能希望在代码中添加console.log(result)
并使用Firebug检查API调用的结果。也许它会给你一个错误信息。听起来我觉得这里可能存在问题,因为在没有有效fb:profile-pic
的情况下创建的uid
会显示空白方块。
我会仔细检查您在“连接网址”设置下为应用程序提供的网址是Facebook可以访问的有效网址。还要仔细检查您为xd_reciever.htm文件指定的路径是否正常工作。值得仔细检查的第三件事是你在文档中设置了正确的xml命名空间:
<html xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">