检查用户是否是特定facebook组的成员

时间:2013-03-24 19:23:21

标签: facebook membership facebook-oauth facebook-group

您是否有一个示例,说明如何使用php确认尝试访问您应用内容的人是特定Facebook群组的成员?我已经阅读了开发人员文档,所有它设法做的事情让我更加困惑。我看过与此相似的帖子,但他们只是告诉我如何打印成员列表......

我需要知道如何获取列表并查看尝试访问该应用的用户是否是该组的成员,以便我可以:允许访问或b:拒绝访问并将用户重定向到分组页面,以便他们可以申请会员资格......

2 个答案:

答案 0 :(得分:4)

是的,非常简单,您只需要知道要执行此操作的组的ID并询问范围 user_groups 权限,以便查询用户拥有的组。

使用PHP SDK,您可以执行以下操作:

<?php
  // Remember to copy files from the SDK's src/ directory to a
  // directory in your application on the server, such as php-sdk/
  require_once('php-sdk/facebook.php');

  $config = array(
    'appId' => 'YOUR_APP_ID',
    'secret' => 'YOUR_APP_SECRET',
  );

  $facebook = new Facebook($config);
  $user_id = $facebook->getUser();
if($user_id) {

      // We have a user ID, so probably a logged in user.
      // If not, we'll get an exception, which we handle below.
      try {

        $user_profile = $facebook->api('/me?fields=id,name,groups','GET');
        $user_belongs_to_group= FALSE;
        foreach($user_profile['groups']['data'] as $group){
          if($group['id']==YOUR_GROUP_ID)
           $user_belongs_to_group=TRUE;
        }
        if($user_belongs_to_group){
         //Alright! the user belongs to the group
        }
        else{
          //Oh snap you don't belong here, but you can if want to
        }

      } catch(FacebookApiException $e) {
        // If the user is logged out, you can have a 
        // user ID even though the access token is invalid.
        // In this case, we'll get an exception, so we'll
        // just ask the user to login again here.
        $login_url = $facebook->getLoginUrl(); 
        echo 'Please <a href="' . $login_url . '">login.</a>';
        error_log($e->getType());
        error_log($e->getMessage());
      }   
    } else {

      // No user, print a link for the user to login
      $login_url = $facebook->getLoginUrl();
      echo 'Please <a href="' . $login_url . '">login.</a>';

        }

?>

我从Facebook抓取的部分代码中,您可以看到在此处查询群组时返回的数据:https://developers.facebook.com/tools/explorer

在名称转到连接后按加号,选择组并按发送

答案 1 :(得分:0)

您处于catch-22状态,您需要用户通过user_groups权限向其群组授予权限。