2012-02-15 111 views
0

我有一個問題,我希望你們都會幫助我。我正在使用Wordpress。在我的國家,facebook被禁止。所以我不能訪問我的Facebook個人資料圖片:PHP:在訪問鏈接時如何獲取返回的鏈接

鏈路A:http://graph.facebook.com/100001225080368/picture - >和Facebook將鏈路B返回到瀏覽器:

鏈路B:http://profile.ak.fbcdn.net/hprofile-ak-snc4/161159_100001225080368_1270343183_q.jpg

我有我的博客上的應用。它將連接到Facebook並獲取所有數據(狀態,圖片,鏈接,如...),然後顯示在我的博客上。問題是:文本數據可以顯示,但個人資料圖片不能。這是因爲,以顯示個人資料圖片代碼:

<img src="$fb_pic_id" /> 

$ fb_pic_id在我的PHP代碼將返回鏈路A - >這個鏈接中有和我的國家的Facebook域(Facebook是禁止的),瀏覽器可以」 t顯示,默認情況下連接將在30秒後超時。

但是,如果我將鏈接B傳遞給「src」屬性,將顯示個人資料圖片。但我無法在我的PHP代碼中硬編碼此鏈接,因爲當我(和其他用戶)更改個人資料圖片時,鏈接B將不正確。

所以我想問一下,我們是否可以使用PHP代碼來獲取從鏈接A返回的鏈接B,然後,我將LinkB設置爲「src」屬性以顯示最新的Facebook個人資料圖片ID。

謝謝,我希望你能幫助我:)

回答

1

Facebook正在使用Location頭所以這是很簡單的獲取圖像的最終URL使用HTTP重定向:

$url = 'http://graph.facebook.com/100001225080368/picture'; 

$ch = curl_init($url); 
curl_setopt_array($ch, array(
    CURLOPT_FOLLOWLOCATION => false, 
    CURLOPT_HEADER => true, 
    CURLINFO_HEADER_OUT => true, 
    CURLOPT_NOBODY => true, 
    CURLOPT_RETURNTRANSFER => true 
)); 

$headers = curl_exec($ch); 
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

if ($code == 302) { 
    preg_match('/Location:(.*?)\n/', $headers, $matches); 
    // NOTE: this will contain URL from `*.fbcdn.net` 
    $directURL = trim(array_pop($matches)); 
} else { 
    // NOTE: Previous code wasn't redirect by Facebook to original image 
    // Do some fallback... 
} 
+0

謝謝大家非常感謝你! – newbie29 2012-02-15 16:14:42