FB.api为response.name返回undefined

时间:2010-09-22 15:37:39

标签: facebook

我正在iframe中创建一个Facebook应用。该页面大部分都在工作,但我想在页面中使用当前登录的用户名,用于自定义消息传递等。

我正在加载FB库:

 <div id="fb-root"></div>
 <script  type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
 <script type="text/javascript" >
  FB.init({
   appId  : '106832082707477',
   status : true, // check login status
   cookie : true, // enable cookies to allow the server to access the session
   xfbml  : true  // parse XFBML
  });
  FB.getLoginStatus(function(response) {console.log("FB.getLoginStatus=" + response.status)});
  </script>

我目前在沙盒模式下有页面,但是4个人中有两个接收FB.getLoginStatus =已连接,而另外两个获得FB.getLoginStatus = NotConnected。

对于那些没有连接的人,当我调用FB.api时,它会返回'undefined'作为用户名:

 function testFBLoggedIn() {
  //http://developers.facebook.com/docs/reference/api/user
  FB.api('/me', function(response) {
   alert(response.first_name);
                }
        }

我真的不想让用户登录我的应用程序,因为我不想尝试访问除first_name,last_name和name用户属性之外的任何内容。此外,这是用户必须执行的额外步骤,我们已经在当前流程中销售了客户端。

有没有人对如何持续处理Facebook用户名,除非抛出一个允许框有任何想法?

感谢。

2 个答案:

答案 0 :(得分:4)

如果用户未连接,则您无法使用/me路径,因为它指的是当前连接的用户。

您可以使用/uid路径获取任何用户的名称,但问题是如果用户未与您的应用程序相关联,那么您就不知道他们的用户名。

所以如果他们没有连接,我认为你不能得到用户名。

答案 1 :(得分:0)

我目前正在开发一款应用,当我向/我/朋友进行API调用时,作为测试用户,它会返回用户ID,但不会返回名称。当我在真实的Facebook帐户中使用相同的应用程序时,它可以正常工作。

我怀疑这是因为测试用户的所有朋友也是测试用户。因此,如果您遇到类似的问题,请尝试使用真正的Facebook用户进行测试。