3

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

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

4

2 回答 2

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

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

于 2013-03-24T19:41:43.693 回答
0

您处于 catch-22 中,您将需要用户通过权限向他的组授予user_groups权限。

于 2013-03-24T19:41:57.210 回答