Check Facebook User Permissions (PHP)

I assume you are using Facebook PHP SDK in your project, if you need to check multiple permissions granted by the user using PHP, try following method. We will break string into an array, and then check for the permissions already granted by the user.

 
1
2
3
4
5
6
7
8
$fbPermissions = 'publish_stream,user_hometown,user_subscriptions'; //permissions
$permissions_needed = explode(',',$fbPermissions); //create array by splitting string
      foreach($permissions_needed as $per) //loop through each permission
      {
        if (!array_key_exists($per, $user_permissions['data'][0])) { //check whether more permission needed
            die('We need additional '.$per.' permission to continue!');
        }
      }

Here’s how I’ve applied above method in real-time:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//Required facebook permissions, separated with comma
$fbPermissions = 'publish_stream,user_hometown,user_subscriptions';  

//include sdk
include_once("inc/facebook.php");

//Facebook API
$facebook = new Facebook(array(
  'appId'  => 'app id',
  'secret' => 'app secret',
));

$fbuser = $facebook->getUser(); // get user
$loginUrl = $facebook->getLoginUrl(array('scope' => $fbPermissions)); //login url

if(!$fbuser)
{
$loginUrl = $facebook->getLoginUrl(array('scope' => $fbPermissions));
echo '<a href="'.$loginUrl.'">Login to Facebook</a>';
}
else
{
     try {
        $user_profile = $facebook->api('/me'); //user profile
        $user_permissions = $facebook->api("/me/permissions"); //list of user permissions
      } catch (FacebookApiException $e) {
        $fbuser = null;
      }

      $permissions_needed = explode(',',$fbPermissions); // permission required to proceed
      foreach($permissions_needed as $per) //loop thrugh each permission
      {
        if (!array_key_exists($per, $user_permissions['data'][0])) { //if more permission needed show login link
            die('We need additional '.$per.' permission to continue, <a href="'.$loginUrl.'">click here</a>!');
        }
      }
}

Related Articles:

Article by on March 3, 2013 Tagged under Tagged under , . If you like this article, please consider sharing it.

One Thought

Leave a Comment

Get your comment picture from Gravatar.com.
Your email address will not be published. Required fields are marked *