2011-08-25 11 views
12

Come posso chiedere le autorizzazioni utilizzando il nuovo SDK PHP? Non voglio usare l'api del grafico e analizzare l'url per tutto il tempo. Quando l'applicazione è aperta, dovrebbe chiedere automaticamente le autorizzazioni se l'utente non ne ha già concesso uno.Chiedere il permesso utilizzando il nuovo SDK PHP (3.X.X)

+0

Cosa intendi con questo? non vuoi usare '$ facebook-> getLoginUrl()' tutto il tempo? – ifaour

risposta

20

Ecco come lo sto facendo con l'ultimo SDK PHP (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']; 
+0

Il parametro 'cookie' non viene utilizzato con l'SDK PHP più recente. Puoi rimuoverlo. – Phillip

+1

Grazie, credo che sia stato lasciato lì dalla vecchia versione di PHP SDK –

2

sessione basata login in portata e Logout con access_token per 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 ?> 
Problemi correlati