5

Graph API (PHP を使用) を介してタイムラインのカバー写真の URL にアクセスすると、851x315 ではなく 720x266 の写真が返されることに気付きました。アクセス時に返されたjson配列<graph api url>/userId/?field=coverのURLを使用するか、アクセスすることにより['cover']['source']<graph api url>/userID

フル サイズのカバー写真を取得する方法が見つかりませんでした。Firebug を使用すると、Facebook がフルサイズの 851x315 の画像をロードするのを見ることができます。URL の唯一の違いは、API によって返されたもののパスに 720x720 があることです。

Facebook が読み込むもの:

http://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/xxxxxx_xxxxxxxxxxxxxxx_xxxxxxxxxxxx_n.jpg

Graph API が返すもの

http://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/s720x720/xxxxxx_xxxxxxxxxxxxxxx_xxxxxxxxx_n.jpg

フル サイズのカバー写真の URL に直接アクセスする方法はありますか? API から返された URL を解析して 720x720 を削除することもできますが、これがフル サイズのカバー写真の URL を直接取得するよりエレガントな方法であることを願っています。

4

3 に答える 3

6

Facebookユーザーのフルサイズのタイムラインカバー写真にアクセスする


phpでは、次のことができます。その小さなハック、そして私はそれが一生続くことを保証しません。

ご覧のとおりs720x720、返された写真のURLにがあります。これを l720(L720)に置き換えます。phpのpreg_replace()の助けを借りて。


$coverphoto_url="https://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/s720x720/xxxxxx_xxxxxxxxxxxxxxx_xxxxxxxxxx_n.jpg";

$coverphoto_url = preg_replace('/s720/i','l720',$coverphoto_url);

これは戻ります、

https://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/ l720x720 /xxxxxx_xxxxxxxxxxxxxxx_xxxxxxxxxx_n.jpg


javascriptを使用してこれを行うこともできます。

coverphoto_url = coverphoto_url.replace(/s720/i, 'l720');

グラフAPIを介してカバー写真を取得する方法がわからない場合は、この質問をお読みください。

securlカバーURLを取得する方法は?

これが誰かに役立つことを願っています:)

于 2013-01-16T13:08:21.353 に答える
1

私のテストでは、URL のこの部分が問題の核心であることがわかりました。 .../c0.0.851.315/...

したがって、次のようなリクエストを実行します。

$url = "https://graph.facebook.com/{$id}?fields=cover";

// // this points it to the actual banner, not the fullsized one 
$key_851 = 'c0.0.851.315';

$response = json_decode( file_get_contents( $url ) );

if( is_object( $response ) && property_exists( $response->cover , 'source' ) ) {
    $coverphoto_url = preg_replace( '/s720(\w*\.*)\d*(?<!\/)/i', $key_851 ,$response->cover->source );
    echo $coverphoto_url;
}
于 2014-01-12T11:43:13.273 に答える