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

2019-03-08 21:40发布

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.

2条回答
贪生不怕死
2楼-- · 2019-03-08 21:58

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'];
查看更多
该账号已被封号
3楼-- · 2019-03-08 22:05

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 ?>
查看更多
登录 后发表回答