Fb.api未定义用户

时间:2011-03-14 13:28:34

标签: 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);
});

它以正确的方式回应。

怎么可能? 为什么'/我'永远不会工作?

2 个答案:

答案 0 :(得分:1)

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

您是否可以使用FB.getLoginStatus

设置好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);
    }

答案 1 :(得分:1)

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

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);
            });
        } 
    });