Javascript Fb.api未定义用户

Javascript Fb.api未定义用户,javascript,facebook,facebook-graph-api,Javascript,Facebook,Facebook Graph Api,我有以下问题: 一旦用户登录facebook,如果我运行以下代码: FB.api('/me', function(user) { alert(user.name); }); 它会弹出一个写有“Udefined”的警报 但如果我按以下方式更改代码: FB.api( /[MY_REAL_FACEBOOK_ID], function(user) { alert(user.name); }); 它以正确的方式响应 这怎么可能? 为什么“/me”永远不起作用?我想你可能是在应用

我有以下问题:

一旦用户登录facebook,如果我运行以下代码:

FB.api('/me', function(user) {
      alert(user.name);
});
它会弹出一个写有“Udefined”的警报

但如果我按以下方式更改代码:

FB.api( /[MY_REAL_FACEBOOK_ID], function(user) {
      alert(user.name);
});
它以正确的方式响应

这怎么可能?
为什么“/me”永远不起作用?

我想你可能是在应用程序的上下文而不是用户的上下文中查询“/me”。文档没有尽可能明确,但我也遇到了同样的问题

你能用吗

在设置了FB.init之后,我调用了FB.getLoginStatus,类似于下面的内容。也许有更好的方法可以做到这一点,但对我来说很有效

希望这有助于:

 FB.getLoginStatus(function (response) {

            if (response.session) {
                // logged in and connected user, someone you know

                graphUrl = "https://graph.facebook.com/me?access_token=" +         response.session.access_token + "&callback=displayUser"
                var script = document.createElement("script");
                script.src = graphUrl;
                document.body.appendChild(script);


            } else {
                // no user session available, someone you dont know

            }});


 function displayUser(user) {

        alert(user.name);
    }

使用以下代码克服未定义的问题:

window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : your_app_id,                        
      status     : true,                                 
      xfbml      : true                                 
    });

    // Additional initialization code such as adding Event Listeners goes here

    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            alert("connected");
            connecter=true;
            FB.api('/me', function(user) {
                alert(user.name);
                alert(user.first_name);
                alert(user.last_name);
                alert(user.email);
            });
        } 
    });

这也是直截了当的:-/你能在那一行上打断调试器,或者把你要取回的对象转储掉吗?谢谢你的asnwer。。。我是facebook API的新手,我甚至不知道如何调试错误。我怀疑错误在FB.init中,但我按照facebook文档中的解释设置了它:FB.init({appId:[MY_APP_ID],status:true,cookie:true,xfbml:true});它仍然不起作用。为什么需要访问令牌?文档中没有提到这一点。它只告诉我们FB.init、标签FB.login-button和FB.api需要用户的信息。访问令牌也是必要的吗?什么不起作用?您是否同时得到响应和会话值?据我所知,给定的access_令牌允许您使用的应用程序代表用户进行允许的呼叫。谢谢:那么这里的修复方法是什么?您正在测试
response.status==“connected”
而不是测试
response.session
是否定义为另一个答案?这样更好吗?