2011-11-19 91 views
1

我有一個網站,首先使用Facebook JavaScript API來登錄用戶。但是,當用戶發送一個xmlhttp請求到我的PHP腳本之一,我想再次檢查,看看是否用戶通過PHP登錄(爲了證券)。Facebook身份驗證PHP和AJAX

我有一個工作系統,但經過網站改造似乎有一個錯誤。當我在facebook.php腳本中回顯$ html時,出現此錯誤:{"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException"}}

/* request.js */ 
var postData = "id=" + id; 

sendRequest('assets/php/believe.php',function(req) { 
    console.log(req.responseText); 
},postData); 

/* believe.php */ 
<?php 
include("facebook.php"); 
$id = intval($_POST["id"]); 

if($id == '') { 
    //Stuff 
} else { 
    if($cookie) { 
    echo "hey"; 
    } 
} 
?> 

/* facebook.php */ 
<?php 
define('YOUR_APP_ID', 'xxxxxx'); 
define('YOUR_APP_SECRET', 'xxxxxxxxxxxx'); 

function curl_get_contents($url){ 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_URL, $url);  
    $html = curl_exec($curl); 
    curl_close($curl); 
    echo "$html"; 
    return $html; 
} 

function get_facebook_cookie($app_id, $app_secret){ 
    $args = array(); 
    parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    ksort($args); 
    $payload = ''; 
    foreach ($args as $key => $value){ 
    if ($key != 'sig'){ 
     $payload .= $key . '=' . $value; 
    } 
    } 
    if (md5($payload . $app_secret) != $args['sig']){ 
    return null; 
    } 
    return $args; 
} 

$cookie = get_facebook_cookie(YOUR_APP_ID, YOUR_APP_SECRET); 

$user = json_decode(curl_get_contents(
    'https://graph.facebook.com/me?access_token=' . 
    $cookie['access_token'])); 
?> 

回答

0

我認爲你的代碼沒問題。用戶訪問令牌已過期。如果用戶更新它,代碼將起作用。確保你在Cookie中有一個有效的標記