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谢谢 –