2012-03-22 4 views
11

私は開いたグラフで私のページの壁を取得しています。 そして、誰かが写真を掲示したときに、私はそれはJSONページの壁紙/フィードに掲載された高解像度の写真を取得する

{ 
    "id": "27888702146_10150369820322147", 
    "from": { 
     "name": "brocoli", 
     "category": "Record label", 
     "id": "27888702146" 
    }, 
    "message": "Vincent Epplay/David Fenech/Jac Berrocal \u00e0 Beaubourg ce soir, 19h, gratos.", 
    "picture": "http://photos-f.ak.fbcdn.net/hphotos-ak-snc7/305819_10150369820292147_27888702146_8255527_583491475_s.jpg", 
    "link": "https://www.facebook.com/photo.php?fbid=10150369820292147&set=a.386279807146.165840.27888702146&type=1", 
    "icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yz/r/StEh3RhPvjk.gif", 
    "type": "photo", 
    "object_id": "10150369820292147", 
    "created_time": "2011-10-16T08:22:21+0000", 
    "updated_time": "2011-10-16T08:22:21+0000", 
    "likes": { 
     "data": [ 
      { 
       "name": "brocoli", 
       "category": "Record label", 
       "id": "27888702146" 
      }, 
      { 
       "name": "Agathe Morier", 
       "id": "601668526" 
      } 
     ], 
     "count": 2 
    }, 
    "comments": { 
     "count": 0 
    }, 
    "is_published": true 
    } 

問題に乗るには、画像リンクは画像の低解像度のコピーであることです。

完全な画像のURLを取得するにはどうすればよいですか?

ありがとうございます!

ベスト

ジョフロワ

+0

解決策がありましたら、以下の回答は機能しません。 –

答えて

17

それはobject_id(あなたが提供された結果でidある写真ではないpost_id)だとあなたはグラフAPIを照会することによってphotoの異なるバージョンを取得することができます。

あなたがオブジェクトによってphotoを要求します一度idあなたは、URLおよび寸法でimagesの配列を取得します:

http://graph.facebook.com/10150369820292147?fields=images 
+0

素晴らしい!それは魅力のように機能します!どうもありがとう! – geoffroy

+0

多くのありがとう...パーフェクト – Superdev

+0

ありがとうございます。素晴らしい答え:) – Supertecnoboff

2

は、このコードを使用します。私にとってその作業鮮明な画像

String PICTURE_URL; 

String getPicture = hashMap.get("picture"); 
     if (getPicture.contains("_t.")) { 
      PICTURE_URL = getPicture.replaceAll("_t.", "_n."); 
     } else if (getPicture.contains("_a.")) { 
      PICTURE_URL = getPicture.replaceAll("_a.", "_n."); 
     } else if (getPicture.contains("_s.")) { 
      PICTURE_URL = getPicture.replaceAll("_s.", "_n."); 
     } else if (getPicture.contains("_q.")) {    
      PICTURE_URL = getPicture.replaceAll("_q.", "_n."); 
     } 
     url=new URL(PICTURE_URL); 
     Bitmap bitmap=BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
     ((ImageView)view.findViewById(R.id.imageView_FullImage)).setImageBitmap(bitmap); 
+0

少しハッキーかもしれませんが、それは動作します;) – stealthcopter

+1

私は時々、時には動作しません....なぜfacebookはイメージを得るように愚かでした –

+3

それはもう役に立たないようです –

4

を取得し、添付ファイルが動作しない場合はあなたが今

/v2.3/105753476132681/posts?limit=5&fields=likes.summary(true),comments.summary(true), attachments 

を使用して、メインの記事のリストからこれを行うことができ、full_pictureを試してみてください - それはちょうど100×100の画像を与えました私のためにも。

添付ファイルすべてを行う必要があり、少なくとも画像の640×480のバージョン(私のORIG写真のサイズが何であったかわからない。)

5

とのデータのハッシュを返します。

http://graph.facebook.com/me?fields=picture.height(961) 
// replace 961 with your required height which u want 
+1

これは受け入れられる答えでしょう。ただ今働いているのは –

3

ものの要請写真のobject_idによって異なる次元の画像の配列が返されますが、このアプローチではFacebook APIへの追加の呼び出しが必要になることがあります。

より簡単な方法は、full_pictureをあなたのパラメータのリストに追加することです。これにより、投稿に関連付けられた最高解像度の画像が抽出されます。

例えば
/v2.2/6275848869/posts?fields=full_picture 

に、あなたは3回APIをコールする必要があると思いobject_idアプローチで、過去X日にFacebookのページから、すべての記事を抽出したい場合:

  1. へページ情報を取得します。
  2. 投稿のリストを抽出し、投稿ごとにobject_idを取得するには
  3. object_idについては、より高解像度の画像のリストを取得する。
関連する問題