2011-08-25 9 views
12

新しいPHP SDKを使用して権限を求める方法を教えてください。私はグラフのAPIを使用して、URLを常に解析したくありません。アプリケーションが開かれると、ユーザーが既に許可していない場合に自動的に許可が求められます。ここで新しいPHP SDK(3.X.X)を使用して権限を求める

+0

これはどういう意味ですか?あなたはいつも '$ facebook-> getLoginUrl()'を使いたくないのですか? – ifaour

答えて

20

は、私は、最新の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']; 
+0

'cookie'パラメータは、最新のPHP SDKでは使用されていません。それを削除することができます。 – Phillip

+1

ありがとう、私はそれが古いバージョンのPHP SDKから残っていたと思います –

2
PHP-SDK 3.2.0ためaccess_tokenはとスコープとログアウトと

セッション・ベースのログインでそれをやっている方法です。

<?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 ?> 
関連する問題