Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Asking for permission using new PHP SDK (3.X.X)

How can I ask for permissions using new PHP SDK? I don't want to use the graph api and parse the url all the time. When the application is opened it should automatically ask for permissions if the user hasn't granted one already.

like image 435
King Julien Avatar asked Aug 25 '11 10:08

King Julien


2 Answers

Here's how i'm doing it with the latest PHP SDK (3.0.1)

// init new facebook class instance with app info (taken from the DB)
$facebook = new Facebook(array(
    'appId' => 'YOUR APP ID',
    'secret' => 'YOUR APP SECRET'
));
// get user UID
$fb_user_id = $facebook->getUser();

    // get the url where to redirect the user
$location = "". $facebook->getLoginUrl(array('scope' => 'publish_stream, email'));

// check if we have valid user
if ($fb_user_id) {
    try {
        // Proceed knowing you have a logged in user who's authenticated.
        $fb_user_profile = $facebook->api('/me');   

    } catch (FacebookApiException $e) {
        $fb_user_id = NULL;
        // seems we don't have enough permissions
        // we use javascript to redirect user instead of header() due to Facebook bug
        print '<script language="javascript" type="text/javascript"> top.location.href="'. $location .'"; </script>';

        // kill the code so nothing else will happen before user gives us permissions
        die();
    }

} else {
    // seems our user hasn't logged in, redirect him to a FB login page

    print '<script language="javascript" type="text/javascript"> top.location.href="'. $location .'"; </script>';

    // kill the code so nothing else will happen before user gives us permissions
    die();
}

// at this point we have an logged in user who has given permissions to our APP
// basic user info can be fetched easily
print "Welcome to my app". $fb_user_profile['name'];
like image 82
Henrik Peinar Avatar answered Nov 14 '22 16:11

Henrik Peinar


Session Based Login with scope and Logout with access_token for PHP-SDK 3.2.0.

<?php
require './src/facebook.php';
$facebook = new Facebook(array(
  'appId'  => '135669679827333',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxx',
));
$user = $facebook->getUser();
if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    $user = null;
  }
}
if ($user) {
  $params = array(access_token => ''.$access_token.'');
  $logoutUrl = $facebook->getLogoutUrl($params);
} else {
  $params = array(
     scope => 'read_stream,publish_stream,publish_actions,read_friendlists',
     //redirect_uri => $url
  );
  $loginUrl = $facebook->getLoginUrl($params);
};
$access_token = $_SESSION['fb_135669679827333_access_token'];
?>

.

<?php if($_SESSION['fb_135669679827333_access_token']): ?>
  <a href="<?php echo $logoutUrl; ?>&access_token=<?php echo $access_token; ?>" target="_parent">Login & Connect</a>
<?php else: ?>
  <a href="<?php echo $loginUrl; ?>" target="_parent">Login & Connect</a>
<?php endif ?>
like image 2
ShawnDaGeek Avatar answered Nov 14 '22 17:11

ShawnDaGeek