0

从 2013 年 4 月 23 日起,你不能按照我的要求去做。您可以做的一件事是编写 JS 代码,根据从登录对话框收到的组 ID 重定向到某个页面。


我正在使用 Facebook JS SDK 创建一个 Facebook 连接/登录区域。该区域将针对特定 Facebook 群组的成员。我需要登录来检查他们是否是组的一部分,如果没有登录失败,如果是,那么他们可以继续到下一页。

这是请求查看他们的群组的权限的代码(以及朋友群组,因为该群组是秘密的,因此根据 Facebook 文档需要此权限)。

function login() {
            FB.login(
                     function(response) {
                     if (response.session) {
                     alert('8');
                     } else {
                     alert('9');
                     }
                     },
                     { scope: "email,user_groups,friends_groups" }
                     );
        }

我知道根据图形 API 我可以调用类似的东西:

{
  "email": "*useremail*@gmail.com", 
  "id": "*userid*", 
  "groups": {
   "data": [
  {
    "id": "*groupid*", 
    "administrator": true, 
    "bookmark_order": 1
  }
], 
"paging": {
  "next": "https://graph.facebook.com/*userid*/groups?fields=id&limit=5000&offset=5000&__after_id=*groupid*"
    }
  }
}

我把 * 放在我替换的东西周围,以隐藏组 ID 和我的 FB 用户 ID。


我在 Facebook 的文档中找不到任何内容,说明是否可以调用特定的组 ID 而不是所有组 ID 进行登录。此外,如果有任何人可以检查返回的值是否与我需要的组 ID 匹配,那么这也是可以接受的。

我希望这足以与之合作并感谢!

4

1 回答 1

1

如果用户不是特定组的成员,目前无法使用标准 Facebook 登录序列将登录设置为失败。您将需要运行标准登录,然后(在您的服务器上)检查他们是否在组中。您不想在浏览器中使用 Javascript 进行组成员身份检查,否则登录可能会被欺骗。

编辑:您需要使用 javascript API(一旦用户登录)来获取组连接(如http://developers.facebook.com/docs/reference/api/user/中所述)。像这样(在您的登录回调中):

var check_for_group = function(groupid, callback){
FB.api('/me/groups', function(response) {
  // process the list of groups: response is an array
  for(var i=0;i<response.length;i++){
    if(response[i].id == groupid){ callback(true); return }
  }
  callback(false);
});
};

自从我研究它以来已经有一段时间了,所以你必须验证响应对象实际上是数组,但是如果你check_for_group()用你正在寻找的组的 id 调用它,它将用 a 调用true(如果您想要的组在响应列表中)或false(否则)。尝试类似的方法,看看它是否适合您。

于 2013-04-23T19:15:51.700 回答