0

按照Facebook docs,使用App_access_token很簡單,只要:App_access_token始終返回false

$appid = 'xxx'; 
$secret = 'yyyyyyyyy'; 
$facebook = new Facebook(array(
    'appId' => $appid, 
    'secret' => $secret, 
    'cookie' => true, 
)); 

$session = $facebook->getUser()>0; 
if($session){ 
    $access_token = 'access_token='.$facebook->getAccessToken(); 
    $app_access_token = file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=$appid&client_secret=$secret&grant_type=client_credentials"); 
} 

我的問題是$access_token是好的$app_access_token總是返回false,我究竟做錯了什麼?

CNC中

如果我在瀏覽器中打開URL app_access_token我可以看到訪問令牌!它似乎無法通過file_get_contents ...?

+0

所以問題是file_get_contents不工作? –

+0

這似乎是問題... –

+0

試試這個:啓用php ini設置爲allow_url_fopen,然後重新啓動服務器。 –

回答

1

file_get_contents可以產生問題,可能是由於一些PHP配置設置。 (這裏討論:file_get_contents returns empty string

我會建議你使用捲曲相反,類似但─

function get_content($URL){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_URL, $URL); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     return $data; 
    } 


echo get_content('http://example.com'); 

如果問題仍然存在,重新檢查在URL中的app_idsecret值。

+0

會試試,謝謝! –

+0

您是否對圖形調用的其餘部分使用相同的方法? –

+0

對於其餘的調用,我儘可能使用FB-API,但如果您不使用API​​,則可以「捲曲」。 –

1

我的file_get_contents工作不試試這個:

啓用PHP INI設置allow_url_fopen,然後重新啓動服務器。

這裏是工作代碼:

<?php 

$facebook_appid   = "facebook_appid";         // Facebook appplication id 
$facebook_secret  = "facebook_secret";    // Facebook secret id 
$redirect_uri   = "https://192.168.75.44/facebook_login/fb_login.php"; // return url to our application after facebook login ## should be SAME as in facebook application 
//$cancel_url    = "";            // redirect url if user denies the facebook login ## should be SAME as in facebook application 
$scope     = "user_photos,email,user_birthday,user_online_presence,offline_access"; // User permission for facebook 


$code     = $_REQUEST["code"]?$_REQUEST["code"]:""; 

if(empty($code)) { 
    $_SESSION['state'] = time(); // CSRF protection 
    $dialog_url   = "https://www.facebook.com/dialog/oauth?client_id=". $facebook_appid . "&redirect_uri=" . urlencode($redirect_uri) . "&state=". $_SESSION['state'] . "&scope=".$scope; 
    header("location:".$dialog_url); 
} 

if($_SESSION['state'] && ($_SESSION['state'] == $_REQUEST['state'])) { 
    $token_url   = "https://graph.facebook.com/oauth/access_token?". "client_id=" . $facebook_appid . "&redirect_uri=" . urlencode($redirect_uri). "&client_secret=" . $facebook_secret . "&code=" . $code; 
    $response   = @file_get_contents($token_url); 

    $params    = null; 
    parse_str($response, $params); 

    echo $params['access_token']; 
} 

?> 
+0

這是用戶accesss_token,對吧? Thisone你可以得到它只是$ facebook-> getAccessToken()是app_access_token我有麻煩... bt謝謝 –