Javascript FB.api不是一个函数

Javascript FB.api不是一个函数,javascript,facebook,api,Javascript,Facebook,Api,我想把所有的帖子都放到墙上。我运行了一个连接到FB的示例,但当我尝试使用FB.api获取用户名时(我肯定成功连接),我得到了FB.api不是一个函数。一些搜索发现,这表明我使用了错误的API链接,但当我尝试(似乎使用相同的方法连接)firebug NET面板上的everything时,没有错误。什么也没发生 以下是代码(将链接替换为,以便代码在出现我提到的错误之前正常工作): 函数grab(){ FB.api('/me',函数(响应){ 警报(response.name); }); } 函数更

我想把所有的帖子都放到墙上。我运行了一个连接到FB的示例,但当我尝试使用FB.api获取用户名时(我肯定成功连接),我得到了
FB.api不是一个函数。一些搜索发现,这表明我使用了错误的API链接,但当我尝试(似乎使用相同的方法连接)firebug NET面板上的everything时,没有错误。什么也没发生

以下是代码(将链接替换为,以便代码在出现我提到的错误之前正常工作):


函数grab(){
FB.api('/me',函数(响应){
警报(response.name);
});
}
函数更新\用户\框(){
var user_box=document.getElementById(“用户”);
user_box.innerHTML=
""
+ ""
+“欢迎,”
+ ""
+ "";
FB.XFBML.Host.parseDomTree();
}


init(“b07e858317c9069d450023b7500b4511”,“xd_receiver.htm”,“ifUserConnected”:update_user_box});

谢谢你的帮助

我想你没有正确初始化。我也有类似的问题。。。我不清楚哪一个是oAuth2.0,哪一个是FB Connect。这似乎令人困惑。我遵循下面的例子,它对我有效。看


FB.init({
appId:'您的应用程序ID',
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});
希望这有帮助



另一方面,您可能需要扩展权限才能访问publish\u stream、read\u stream。您应该参考我想您没有正确初始化。我也有类似的问题。。。我不清楚哪一个是oAuth2.0,哪一个是FB Connect。这似乎令人困惑。我遵循下面的例子,它对我有效。看


FB.init({
appId:'您的应用程序ID',
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});
希望这有帮助



另一方面,您可能需要扩展权限才能访问publish\u stream、read\u stream。您应该参考使用来自两个不同SDK的方法
FB.api
是(all.js)的一部分,
FB.xfml.Host.parseDomTree()
是(特性加载器)的一部分。例如,要使用新SDK解析dom树,可以调用
FB.XFBML.parse()
。我建议您从两个SDK中选择一个,如果您刚刚开始使用旧SDK,那么最好选择新SDK。

您正在使用来自两个不同SDK的方法
FB.api
是(all.js)的一部分,
FB.xfml.Host.parseDomTree()
是(特性加载器)的一部分。例如,要使用新SDK解析dom树,可以调用
FB.XFBML.parse()
。我建议您从两个SDK中选择一个,如果您刚刚开始使用旧SDK,那么最好选择新SDK。

Typeoneerror是正确的,您混合了SDK

下面是我如何初始化较新的JS SDK,使用event.subscribe来确保SDK已初始化,并且在继续进行任何API调用或让我的游戏尝试加载之前,用户已经在JS端进行了身份验证

<div id="fb-root"> </div>
<script>
  window.fbAsyncInit = function() {
     FB.init({appId: 'YOUR_APP_ID', status: true, cookie: true, xfbml: true});
     FB.Canvas.setSize({ width: 760, height: 1000 }); // use this to increase canvas height
     FB.Event.subscribe('auth.login', function(response) {
     // You can call your function that requires FB.whatever here...
  });
};
(function() {
 var e = document.createElement('script'); e.async = true;
 e.src = document.location.protocol +
   '//connect.facebook.net/en_US/all.js';
 document.getElementById('fb-root').appendChild(e);
}());
</script>

window.fbAsyninit=函数(){
init({appId:'YOUR_APP_ID',status:true,cookie:true,xfbml:true});
setSize({width:760,height:1000});//使用此选项增加画布高度
FB.Event.subscribe('auth.login',函数(响应){
//你可以调用你的函数,它需要FB.where在这里。。。
});
};
(功能(){
var e=document.createElement('script');e.async=true;
e、 src=document.location.protocol+
“//connect.facebook.net/en_US/all.js”;
document.getElementById('fb-root').appendChild(e);
}());

我还使用PHPSDK执行初始身份验证。。。如果用户未经过身份验证,我会将JS重定向回登录url(可从PHPSDK方法getLoginUrl获得)。希望有帮助

Typeoneerror是对的,您正在混合SDK

下面是我如何初始化较新的JS SDK,使用event.subscribe来确保SDK已初始化,并且在继续进行任何API调用或让我的游戏尝试加载之前,用户已经在JS端进行了身份验证

<div id="fb-root"> </div>
<script>
  window.fbAsyncInit = function() {
     FB.init({appId: 'YOUR_APP_ID', status: true, cookie: true, xfbml: true});
     FB.Canvas.setSize({ width: 760, height: 1000 }); // use this to increase canvas height
     FB.Event.subscribe('auth.login', function(response) {
     // You can call your function that requires FB.whatever here...
  });
};
(function() {
 var e = document.createElement('script'); e.async = true;
 e.src = document.location.protocol +
   '//connect.facebook.net/en_US/all.js';
 document.getElementById('fb-root').appendChild(e);
}());
</script>

window.fbAsyninit=函数(){
init({appId:'YOUR_APP_ID',status:true,cookie:true,xfbml:true});
setSize({width:760,height:1000});//使用此选项增加画布高度
FB.Event.subscribe('auth.login',函数(响应){
//你可以调用你的函数,它需要FB.where在这里。。。
});
};
(功能(){
var e=document.createElement('script');e.async=true;
e、 src=document.location.protocol+
“//connect.facebook.net/en_US/all.js”;
document.getElementById('fb-root').appendChild(e);
}());
我还使用PHPSDK执行初始身份验证。。。如果用户未经过身份验证,我会将JS重定向回登录url(可从PHPSDK方法getLoginUrl获得)。希望有帮助

<div id="fb-root"> </div>
<script>
  window.fbAsyncInit = function() {
     FB.init({appId: 'YOUR_APP_ID', status: true, cookie: true, xfbml: true});
     FB.Canvas.setSize({ width: 760, height: 1000 }); // use this to increase canvas height
     FB.Event.subscribe('auth.login', function(response) {
     // You can call your function that requires FB.whatever here...
  });
};
(function() {
 var e = document.createElement('script'); e.async = true;
 e.src = document.location.protocol +
   '//connect.facebook.net/en_US/all.js';
 document.getElementById('fb-root').appendChild(e);
}());
</script>