2012-09-15 11 views
7

का उपयोग कर कवर फोटो प्राप्त करें मेरे एंड्रॉइड एप्लिकेशन में, मैं अपने फेसबुक अकाउंट से उपयोगकर्ता की कवर फोटो प्राप्त करने की कोशिश कर रहा हूं।फेसबुक एपीआई

मैं नीचे दिए गए कोड का उपयोग कर प्रोफ़ाइल चित्र प्राप्त कर सकता हूं।

profilePicUrl = new URL("http://graph.facebook.com/" + userId + "/picture?type=large"); 

profilePicBmp = BitmapFactory.decodeStream(profilePicUrl.openConnection().getInputStream()); 

documentation कवर फोटो पुन: प्राप्त करने के लिए निम्नलिखित निर्दिष्ट करता है।

उपयोगकर्ता के कवर फोटो

आवश्यक है (स्पष्ट रूप से क्षेत्रों = कवर पैरामीटर का उपयोग कर अनुरोध किया जाना चाहिए)

रिटर्न ACCESS_TOKEN:

offset_y क्षेत्रों आईडी, स्रोत, और की सरणी तो, JSON प्रतिक्रिया की संरचना इस तरह कुछ होगी।

{ 
    "cover": { 
     "cover_id": "10151008748223553", 
     "source": "http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash4/s720x720/391237_10151008748223553_422785532_n.jpg", 
     "offset_y": 0 
    }, 
    "id": "19292868552" 
} 

मैं फेसबुक ग्राफ एपीआई में काफी नया हूं और इसलिए इस बारे में ज्यादा जानकारी नहीं है कि इस बारे में कैसे जाना है।

मैं इस coverPicUrl = new URL("http://graph.facebook.com/" + userId + "/cover?type=large");

है और यह भी इस coverPicUrl = new URL("http://graph.facebook.com/" + userId + "/fields=cover");

की कोशिश की लेकिन मैं उपयोगकर्ता प्रोफ़ाइल के कवर चित्र प्राप्त करने में सक्षम नहीं किया गया है।

ऑनलाइन खोजना भी कोई उपयोगी परिणाम नहीं मिला।

किसी भी मदद की सराहना की जाएगी।

धन्यवाद!

उत्तर

8

"स्रोत" टैग (JSONObject) किसी अन्य JSONObject, "कवर" टैग के अंदर घोंसला है। इस परिणाम को पार्स करने के लिए, आप कुछ इस तरह का उपयोग करना होगा:

JSONObject JOSource = JOCover.optJSONObject("cover"); 
String coverPhoto = JOSource.getString("source"); 

JOCover उदाहरण में प्रयुक्त हो जाती है आप पहले से ही एक JSONOBject (JOCover) है कि जड़ पार्स करने के लिए। आप अपनी जगह पर अपने JSONObject को प्रतिस्थापित कर सकते हैं।

"स्रोत" टैग को सीधे "कवर" टैग में घोंसला नहीं दिया जा सकता है। आपको ".optJSONObject("cover")" का उपयोग करना होगा। मैंने देखा है कि लोग .optJSONObject के बजाय .getString का उपयोग करते हैं लेकिन मैंने इसका कभी भी उपयोग नहीं किया है। चुनें कि आपके लिए क्या काम करता है।

संपादित

एक समाधान ग्राफ़ एपीआई का उपयोग कर, मैं संपादन कर रहा हूँ पहले समाधान और ग्राफ़ एपीआई समाधान के साथ जगह के लिए आपके अनुरोध के अनुसार।

String URL = "https://graph.facebook.com/" + THE_USER_ID + "?fields=cover&access_token=" + Utility.mFacebook.getAccessToken(); 

String finalCoverPhoto; 

try { 

    HttpClient hc = new DefaultHttpClient(); 
    HttpGet get = new HttpGet(URL); 
    HttpResponse rp = hc.execute(get); 

    if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
     String result = EntityUtils.toString(rp.getEntity()); 

     JSONObject JODetails = new JSONObject(result); 

     if (JODetails.has("cover")) { 
      String getInitialCover = JODetails.getString("cover"); 

      if (getInitialCover.equals("null")) { 
       finalCoverPhoto = null; 
     } else { 
      JSONObject JOCover = JODetails.optJSONObject("cover"); 

      if (JOCover.has("source")) { 
       finalCoverPhoto = JOCover.getString("source"); 
      } else { 
       finalCoverPhoto = null; 
      } 
     } 
    } else { 
     finalCoverPhoto = null; 
    } 
} catch (Exception e) { 
    // TODO: handle exception 
} 

मैं इस समाधान का परीक्षण किया और पूरी तरह से काम करता है है:

अधिमानतः, एक AsyncTask में, doInBackground में इस कोड का उपयोग करें। आपको अपनी गतिविधि के लिए आवश्यक मूल URL पर fields कोई अतिरिक्त जोड़ना होगा। परीक्षण के लिए, मैंने केवल fields=cover

और onPostExecute में, कवर चित्र प्रदर्शित करने के लिए अपनी बात करें। उम्मीद है की यह मदद करेगा।

+0

आप मुझे बता सकते यूआरएल जिसे मैं अनुरोध करने के लिए उपयोग कर रहा हूं? मैं यह त्रुटि प्राप्त करता रहता हूं। '{ " त्रुटि ": { " message ":" अज्ञात पथ घटकों:/क्षेत्र = कवर ", " type ":" OAuthException ", " कोड ": 2500 } }' – Swayam

+0

मैं यह त्रुटि भी मिलता है । 'org.json.JSONException: स्रोत के लिए कोई मान नहीं – Swayam

+0

@swayam:'/field = ???? 'का उपयोग करते समय, आपको पहुंच टोकन भी प्रदान करना होगा। मैंने और कोड जोड़ा है जो आदर्श रूप से आपके लिए चाल चलाना चाहिए। –

1

आप पहले ही फोटो यूआरएल को कवर कर चुके हैं, बस उस स्ट्रिंग से जेसन सरणी से स्ट्रिंग को पढ़ें, आप कवर फोटो प्राप्त कर सकते हैं। इस इस तरह कवर फोटो यूआरएल

"source": "http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash4/s720x720/391237_10151008748223553_422785532_n.jpg", 

है आप छवि यूआरएल के रूप में JSON ऑब्जेक्ट प्राप्त कर सकते हैं।

String cover_photo = JsonObject.getString("source"); 
+1

मुझे किस URL का उपयोग करना चाहिए? मैं उलझन में हूं। मैं इस त्रुटि को उत्तर के रूप में प्राप्त करता रहता हूं। '{ " त्रुटि ": { " message ":" अज्ञात पथ घटकों:/क्षेत्र = कवर ", " type ":" OAuthException ", " कोड ": 2500 } }' – Swayam

1

मैंने अपने ऐप में एक समान सुविधा लागू की।

String cover_photo = jsonObj.getJSONObject("pic_cover").getString("source"); 

यह एक कवर फ़ोटो के यूआरएल देता है, के बाद से source टैग pic_cover वस्तु है, जो तब यूनिवर्सल की तरह एक पुस्तकालय का उपयोग कर एक ImageView करने के लिए सेट किया जा सकता है के भीतर नीडिंत है: यह कैसे मैंने किया, FQL उपयोग कर रहा है छवि लोडर

3

नोट: ला रहा है कवर तस्वीर फेसबुक एपीआई और अंतिम बिंदु https://graph.facebook.com/me?fields=cover अब इस्तेमाल नहीं 20 दिसम्बर 2014 के रूप में काम

यह निम्न प्रतिक्रिया देने के लिए चाहिए था:

{ 
    "cover": { 
    "cover_id": "10151008748223553", 
    "source": "http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash4/s720x720/391237_10151008748223553_422785532_n.jpg", 
    "offset_y": 0 
    }, 
    "id": "19292868552" 
} 

लेकिन अब यह सिर्फ उपयोगकर्ता की id देता है:

{ 
    "id": "19292868552" 
} 

सत्यापित इस का उपयोग करते हुए Graph Tool explorer 2.2me?fields=cover का उपयोग कर।

+2

यह 4 अप्रैल 2015 को काम कर रहा है। –

+0

यह अब @YangShun काम नहीं कर रहा है? कोई विचार ? – Sahan

+2

यह अभी भी 14 सितंबर 2016 को काम कर रहा है, लेकिन आपको अपने ऐप के लिए user_photos स्कोप लागू करने की आवश्यकता है। –

0
object.getJSONObject("cover").getString("source") 
+2

यह प्रश्न का उत्तर नहीं प्रदान करता है।किसी लेखक से स्पष्टीकरण की आलोचना करने या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें - आप हमेशा अपनी पोस्ट पर टिप्पणी कर सकते हैं, और एक बार आपके पास पर्याप्त [प्रतिष्ठा] (http://stackoverflow.com/help/whats-reputation) हो [किसी भी पोस्ट पर टिप्पणी करने में सक्षम] [http://stackoverflow.com/help/privileges/comment)। –

+0

ठीक है, मैं इसे ध्यान में रखूंगा, मैं बस व्यक्ति की मदद करना चाहता था –