2013-03-24 3 views
3

У вас есть пример того, как подтвердить, что человек, пытающийся получить доступ к контенту вашего приложения, является членом определенной группы facebook, используя php? Я прочитал документы разработчиков, и все, что ему удалось сделать, это еще больше смутило меня. Я видел сообщения, похожие на этот, но они только показывают мне, как печатать список членов ...Проверка того, является ли пользователь членом определенной группы facebook

Мне нужно знать, как получить список и посмотреть, является ли пользователь, пытающийся получить доступ к приложению, членом группы, так что я могу либо: разрешить доступ, либо b: запретить доступ и перенаправить пользователя на страницу группы, чтобы они могли запросить членство ...

ответ

4

Да, это довольно просто, вам просто нужно знать, Идентификатор группы, которую вы хотите сделать, и запросите область разрешения 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

Пресс знак плюса после имени перейдите к соединениям, выберите группы и нажмите отправить

0

Вы находитесь в catch-22, вам понадобится предоставить разрешения своим группам через разрешение user_groups.