Facebook API FB.getLoginStatus返回undefined

时间:2011-06-20 16:00:56

标签: javascript facebook api facebook-like app-id

我在网站上添加了一个类似按钮,想知道是谁点击了按钮。 这些是我的示例代码:

    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({appId: '182722795115444', status: true, cookie: true,
                 xfbml: true});

        // To find who clicked the like button
        FB.Event.subscribe('edge.create', function(response){
            FB.getLoginStatus(function(response) {

                if (response.session) {
                    // logged in and connected user, someone you know
                    alert("logged in and connected user");
                } else {
                    // no user session available, someone you dont know
                    alert("no user session available");
                }
            });
        });
      };
      (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>
    <script src="http://connect.facebook.net/en_US/all.js#appId=182722795115444&amp;xfbml=1"></script>
    <fb:like href="www.blogcountry.net" send="true" width="450" show_faces="true" font=""></fb:like>

当我点击“喜欢”按钮并登录Facebook时,确实成功,但获得了“没有用户会话”警报。

所以我很困惑:

  1. 我在FB.init中的appId与 fb:喜欢标签,是不是?
  2. 我的错在哪里 程序?
  3. 如何获取点击该用户的用户名 喜欢按钮?
  4. 提前致谢。


    更新

    @OffBySome感谢您的回答。

    你的意思是我必须调用FB身份验证API,然后我才能获得用户的信息? 但是......在facebook development doc常见问题解答:


      

    我如何知道用户何时点击了   喜欢按钮?

         

    如果您使用的是XFBML版本   按钮,你可以订阅   'edge.create'事件通过   FB.Event.subscribe


    所以,这意味着我不知道是谁点击了Like按钮,只知道点击了按钮。

    如果我想获取用户的信息,我必须在点击Like之前实施登录操作? 这是非常糟糕的可用性。

    任何人都可以给出好主意解决它......

3 个答案:

答案 0 :(得分:2)

我很确定你不会只是喜欢一个页面来获得Facebook会话。您通常只有在使用您的应用程序进行身份验证时才能获得用户Facebook会话(例如,使用<fb:login-button autologoutlink="true"></fb:login-button>)。如果在alert(JSON.stringify(response));内部执行了什么值,你会得到什么值?

答案 1 :(得分:2)

试试这个..

FB.Event.subscribe('edge.create', function(href, widget) 
{                   
alert('You just liked '+href);  

    session = FB.getSession();
    uid = session['uid'];
    alert(uid);

});

答案 2 :(得分:1)

今天遇到同样的问题,这个帖子为我解决了这个问题 - FB.getLoginStatus inside edge.create callback is returning unknown status and null session after logging in from the popup

FB.getLoginStatus方法有第二个参数必须设置为'true'