2013-01-22 201 views
0

我需要您的幫助來解決問題。 之後的某個時間,我得到了令牌時一試,以獲取有關用戶的數據此錯誤發生:圖形API - 無法打開流:HTTP請求失敗! HTTP/1.0 400錯誤請求

A PHP Error was encountered 

Severity: Warning 

Message: file_get_contents(https://graph.facebook.com/me?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request 

的代碼執行是這樣的:

$url = "https://graph.facebook.com/me?access_token=".$token; 
$dados = @json_decode(file_get_contents($url)); 

我怎樣才能解決這個問題呢?爲什麼會發生?

我搜索了很多,但沒有找到解決方案。請有人幫助我。

謝謝。

+0

將您的訪問令牌粘貼到[debugger](https://developers.facebook.com/tools/debug)中。它是有效的和*用戶*訪問令牌? – cpilko

回答

0

我建議使用PHP SDK:https://github.com/facebook/facebook-php-sdk

There's此​​外,如果您向下滾動到「使用」,包括正確的登錄處理一些示例代碼。有了這個,你並不需要考慮訪問令牌,這一切都發生在後臺。另外請記住,如果您想擴展訪問令牌,則訪問令牌最多隻能使用2小時:使用PHP SDK的「setExtendedAccessToken」函數將其延長到60天。

0

嘗試urlencode()您的令牌並將值傳遞給file_get_contents()。這可能工作。

file_get_contents will only work if you have allow_url_fopen = 1 in your php.ini 

對於像上述遠程文件訪問,可以考慮使用cURL函數PHP提供。

function url_get_contents ($Url) { 
    if (!function_exists('curl_init')){ 
     die('CURL is not installed!'); 
    } 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $Url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $output = curl_exec($ch); 
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get the code of request 
    curl_close($ch); 

    if($httpCode == 400) 
     return 'No donuts for you.'; 

    if($httpCode == 200) //is ok? 
     return $output; 


} 
相關問題