【问题标题】:Facebook Javascript, How to detect if user is a fan of my facebook page? While on my site?Facebook Javascript,如何检测用户是否是我的 Facebook 页面的粉丝?在我的网站上?
【发布时间】:2011-03-30 22:53:40
【问题描述】:

我有以下 JS 代码。

代码的目的是首先获取用户的 facebook id,然后使用 FQL 检查该 id 与我的页面 ID 并确保用户是粉丝。

我遇到的问题是代码真正起作用的唯一时间是我使用自己的个人 facebook 个人资料登录。我认为是因为我的个人资料和 FB.init appid 以某种方式关联?

谁能看看这段代码,告诉我哪里出错了?

我的目标再次是使用 JS 首先获取用户 ID(因此是他们的缩略图),然后将其与我自己的 facebook 页面交叉引用以检查他们是否是粉丝。如果他们是 facebook 的粉丝,那我可能会给他们一张优惠券或其他东西。

提前致谢。

<script src="http://connect.facebook.net/en_US/all.js"></script>
//Connect to facebook with my app id..
FB.init({ 
    appId:'135445813195028', 
    cookie:false, 
    status:true, 
    xfbml:true
});

//Check to see if user is actually CONNECTED???
FB.getLoginStatus(function(response) {
    if (response.session) {
        // USER IS CONNECTED
        FB.api('/me', function(user) {
            if (user != null) {
                var image = document.getElementById('imagez');
                image.src = 'http://graph.facebook.com/' + user.id + '/picture?type=large';
                var name = document.getElementById('name');
                name.innerHTML = user.name;
                FBID = user.id;
                console.log('Facebook ID:' + FBID);
                //assemble an FQL query to see if the guy is a fan of our page...
                myquery = 'SELECT uid FROM page_fan WHERE page_id = 126923080686340 AND uid = ' + FBID;
                console.log('query = ' + myquery); 
                ///Run FQL Query to see if user is a fan
                FB.api({
                    method: 'fql.query',
                    query: myquery
                }, function(resp) {
                    if (resp.length) {
                        var IsFan = true;
                        alert('You are A fan!')
                        console.log('Visitor is a fan');
                        //show coupon code...
                    } else {
                        alert('Signed into facebook, but Not a fan!');
                        var IsFan = false;
                        console.log('Visitor is not a fan');
                        //show like button...
                        //once like is clicked then refresh the page...
                    }
                });
            //END Run FQL Query to see if user is a fan
            }
        });
        //Figure out if they are a fan...
    } else {
        // USER IS NOT CONNECTED
        alert('NO USER session, user is not logged into facebook!!!');
    }
});

【问题讨论】:

  • 我不能肯定,但我认为这是权限问题。 Facebook 可能不希望您能够在未经许可的情况下(例如通过应用程序)检查用户的页面。
  • 希望你不能。这不关你的事。
  • 不能说 FB 是否允许这样做,但您确定其他人或您确实启用了控制台的其他尝试?否则你的 console.log 命令将失败并停止 JS。
  • @tomalak,你的意思是什么不关我的事?如果您有一个 facebook 页面,那么确定您网站上的访问者是否是该页面的粉丝是合理的?几乎就像喜欢按钮一样,它已经告诉访问者他们是否喜欢您的页面。
  • @gaby,不确定我是否理解您的评论?如何查看 console.log?

标签: javascript facebook api facebook-fql


【解决方案1】:

FB.getLoginStatus 检查用户是否连接到您的应用程序......而不是 Facebook。

但是当用户没有连接到您的应用程序时,.status 属性可以告诉您失败的原因(如果用户根本没有登录,或者只是连接到您的应用程序)。

所以你应该使用的结构是

FB.getLoginStatus(function(response) {
        if(response.session) {
            alert('connected to Application');
        } else {
            // no user session available, someone you dont know
            if(response.status == "notConnected") {
                // But user is logged into facebook
                alert("Not connected to Application, but is logged in to Facebook");
            } else {
                // User is not logged into facebook
                  alert('Not logged in to facebook');
            }
        }
    });

但您无法访问未授权您的应用程序的用户的 ID。
不是通过 Javascript API。

【讨论】:

  • 知道了,所以在共享用户 ID 之前,我必须确保用户已授权我的应用程序。似乎他们应该公开的东西,但我明白他们为什么不公开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
相关资源
最近更新 更多