2012-02-15 2 views
0

私は問題があり、皆さんが私を助けてくれることを願っています。私はWordpressを使用しています。私の国では、Facebookは禁止されています。私は私のブログ上のアプリを持っているhttp://profile.ak.fbcdn.net/hprofile-ak-snc4/161159_100001225080368_1270343183_q.jpgPHP:リンクにアクセスしたときに返されたリンクを取得する方法

リンクB: - :

リンクA:>とFacebookは、ブラウザへのリンクBを返しますhttp://graph.facebook.com/100001225080368/pictureだから私はで私のFacebookのプロフィール画像にアクセスすることはできません。それはFacebookに接続し、すべてのデータ(ステータス、写真、リンク、など)を取得し、私のブログに表示されます。問題は:テキストデータは表示できますが、プロフィール画像は表示できません。それはプロフィール画像を表示するためのコードがあるので:

戻ります私のPHPコードで
<img src="$fb_pic_id" /> 

$ fb_pic_idリンクA - >このリンクはそれで、私の国でFacebookのドメインを(Facebookが禁止されている)は、ブラウザに」デフォルトでは30秒後にタイムアウトになります。

しかし、リンクBを「src」attrに渡すと、プロフィール画像が表示されます。しかし私は私のPHPコードbeacauseでこのリンクをハードコード化することはできません。私(および他のユーザー)がプロフィール画像を変更すると、リンクBは真ではありません。

リンクAから返されたリンクBを取得するためにPHPコードを使用できるかどうかを尋ねたいと思います。その後、最新のFacebookプロフィールIDを表示するためにLinkBを "src" attrに設定します。

おかげで、私はあなたが私を助けることを願っています:)

答えて

1

Facebookは、それが画像の最終URLを取得するには非常に簡単ですのでLocationヘッダを使用して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

関連する問題