Facebook登录仅允许具有组ID字符串的用户

时间:2013-04-23 19:12:26

标签: android facebook facebook-graph-api cordova phonegap-plugins

你不能从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相匹配也是可以接受的。

我希望这已经足够了,谢谢!

1 个答案:

答案 0 :(得分: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);
});
};

我挖了一段时间,所以你必须验证响应对象是否真的和数组,但是如果你用你正在寻找的组的id来调用check_for_group()对于你,它将被调用true(如果你想要的组在响应列表中)或false(否则)。尝试类似的东西,看看它是否适合你。