2011-03-30 137 views
3

我有以下的JS代码。Facebook Javascript,如何检测用户是否是我的Facebook页面的粉丝?在我的网站上?

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

我遇到的问题是代码实际工作的唯一时间是如果我用我自己的个人脸谱配置文件登录。我认为它是因为我的个人资料和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!!!'); 
    } 
}); 
+0

我不能肯定地说,但我认为这是一个权限问题。 Facebook可能不希望您能够在没有权限的情况下(例如通过应用程序)检查用户的页面。 – n00dle 2011-03-30 22:56:09

+2

希望你不能。这不是你的事情。 – 2011-03-30 22:58:08

+0

不能说FB是否允许这样做,但是您确定其他人或其他人尝试启用控制台吗?否则你的'console.log'命令会失败并停止JS。 – 2011-03-30 22:59:12

回答

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。

+0

明白了,所以我必须确保用户已经授权我的应用程序,在用户ID是共享的。似乎他们应该公开的东西,但我可以看到他们为什么不。 – user684844 2011-04-02 22:37:00

相关问题