फेसबुक ग्राफ एपीआई: एक अनुरोध में बड़ी तस्वीरें प्राप्त करें


88

मैं वर्तमान में कुछ परीक्षण करने के लिए ग्राफ एपीआई एक्सप्लोरर का उपयोग कर रहा हूं । यह एक अच्छा उपकरण है।

मैं मित्रों की नाम, आईडी और चित्रों के साथ उपयोगकर्ता की मित्र सूची प्राप्त करना चाहता हूं। इसलिए मैं टाइप करता हूं:

https://graph.facebook.com/me/friends?fields=id,picture,name

लेकिन तस्वीर केवल 50x50 की है, और मैं इस अनुरोध में एक बड़ा चाहूंगा।

क्या यह संभव है ?

जवाबों:


68

हालांकि आपको 'चित्र' विशेषता को खींचने की आवश्यकता नहीं है। बहुत अधिक सुविधाजनक तरीका है, केवल एक चीज जिसकी आपको ज़रूरत है वह है उपयोगकर्ता, नीचे उदाहरण देखें;

https://graph.facebook.com/user_id/picture?type=large

ps प्रकार आपके इच्छित आकार को परिभाषित करता है

plz ध्यान रखें कि मूल अनुमतियों के साथ टोकन का उपयोग करते हुए, / me / friends केवल id + name विशेषताओं के साथ मित्रों की सूची लौटाएंगे


1
लेकिन मैं आपके साथ अंतिम वाक्य से सहमत नहीं हूं: मूल अनुमति के साथ, आप आईडी + नाम विशेषता से अधिक का उपयोग कर सकते हैं, उदाहरण: graph.facebook.com/btaylor
मार्टिन

29
उह, क्या "एक अनुरोध में" के बारे में?
इयूलियन ओनोफ्रेई

4
U तस्वीर के full_picture इंस्टैट का भी उपयोग कर सकता है।
बो पेनींग्स

"संदेश": "(# 12) पिक्चर एज इस प्रकार के लिए संस्करणों v2.3 और उच्चतर के लिए पदावनत है",
टूलकिट

201

जैसा कि फेसबुक पर इस बग में वर्णित है , आप नए एपीआई " फ़ील्ड विस्तार " सिंटैक्स के माध्यम से अब विशिष्ट छवि आकारों का भी अनुरोध कर सकते हैं ।

इस तरह:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)

27
वास्तव में। फ़ील्ड्स = पिक्चर। एक्सपोज़र (640) और भी बेहतर है।
काया

6
ऐसा लगता है कि फेसबुक ग्राफ एपीआई ने अपने एप को बदल दिया है। जब मैंने आपके सुझाव का उपयोग करने की कोशिश की तो फेसबुक ने "तस्वीर द्वारा उप-क्षेत्रों का समर्थन नहीं किया"।
फेट एच। वीयू

2
त्रुटि हो रही है: {"त्रुटि": {"संदेश": "असमर्थित अनुरोध प्राप्त करें। कृपया डेवलपर्स.फेसबुक. com/docs/graph-api", "प्रकार": "ग्राफमेथोडिसेप्शन", "कोड": पर ग्राफ़ एपीआई प्रलेखन पढ़ें। 100}}
विनेश टीपी

13
देखें; क्षेत्र = full_picture, 2.x प्रश्नों के लिए अनुलग्नक
केविन

3
नई फेसबुक परिवर्तन के साथ, बड़ी छवि प्राप्त करने में असमर्थ। कोई इशारा कोई?
shadab.tughlaq

81

सही चित्र आकारों के साथ सभी दोस्तों (जो ऐप का भी उपयोग कर रहे हैं) का सबसे अच्छा तरीका फ़ील्ड विस्तार का उपयोग करना है , या तो एक आकार के टैग (वर्ग, छोटे, सामान्य, बड़े) के साथ:

/me/friends?fields=picture.type(large)

(संपादित करें: यह अब काम नहीं करता है)

... या आप चौड़ाई / ऊँचाई निर्दिष्ट कर सकते हैं:

me/friends?fields=picture.width(100).height(100)

Btw, आप इसे इस तरह भी लिख सकते हैं:

me?fields=friends{picture.type(large)}

1
जानकारी के लिए thanx, मैं जवाब को अद्यतन करेगा। full_picture दोस्तों के लिए काम नहीं करता है, हालांकि: / me / friends? फ़ील्ड = full_picture - क्या आपको पता है कि यह कैसे संभव होगा?
luschn

34

खेतों की सरणी बदलें id,name,pictureकरने के लिएid,name,picture.type(large)

https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>

परिणाम:

{
   "id": "130716224073524",
   "name": "Julian Mann",
   "picture": {
      "data": {
         "is_silhouette": false,
         "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
      }
   }
}

7
200 x 200 बड़ा कैसे है?
एलेक्सवल्जो

1
नवीनतम (2.10) में ग्राफ एपीआई "बड़े" आकार में उपलब्ध नहीं है:Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album
होन्जा

33

आप पिक्सेल में चित्र का आकार इस तरह सेट कर सकते हैं:

https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)

इसी तरह से, typeपैरामीटर का उपयोग किया जा सकता है

{user-id}/?fields=name,picture.type(large)

से प्रलेखन

टाइप एनम {छोटा, सामान्य, एल्बम, बड़ा, वर्ग}


20

यदि आप इसे ऊंचाई या चौड़ाई के आधार पर चाहते हैं तो आप छवि प्राप्त करने का प्रयास कर सकते हैं

https://graph.facebook.com/user_id/picture?height=

या

https://graph.facebook.com/user_id/picture?width=

मान पिक्सेल में डिफ़ॉल्ट रूप से होते हैं, आपको केवल अंतर मान प्रदान करने की आवश्यकता होती है


20

मैंने बड़े पैमाने पर ग्राफ़ एपीआई एक्सप्लोरर पर शोध किया और अंत में full_picture पाया

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture

पुनश्च मैंने देखा कि full_picture हमेशा पूर्ण आकार की छवि प्रदान नहीं करेगा जो मुझे चाहिए। 'संलग्नक' करता है

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments

यह केवल चौड़ाई दिखाता है: 720px। उर केवल बड़े फोटो इस तरह पाते हैं। सबसे बड़े ग्राफ के लिए ।facebook.com/photo_id u 6 अलग-अलग आकार की फोटो देख सकते हैं।
गोखन

मैं सिर्फ दोस्तों के साथ यह परीक्षण किया समापन बिंदु और यह काम नहीं किया
luschn

9

हम ... मुझे लगता है कि मुझे एक समाधान मिल गया है।

वास्तव में, बस अनुरोध कर सकते हैं

https://graph.facebook.com/me/friends?fields=id,name

के अनुसार http://developers.facebook.com/docs/reference/api/ (अनुभाग "चित्र"), प्रोफाइल की तस्वीरों का यूआरएल प्रयोक्ता आईडी के साथ बनाया जा सकता है

उदाहरण के लिए, उपयोगकर्ता आईडी $ id में है:

"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"

लेकिन यह अंतिम छवि URL नहीं है, इसलिए यदि किसी के पास बेहतर समाधान है, तो मुझे यह जानकर खुशी होगी :)


1
चित्र आकार प्रकार: डेवलपर्स.फेसबुक.
com

3

आप फेसबुक ग्राफ एपीआई के लिए अपने अनुरोध में निर्दिष्ट widthऔर कर सकते हैं height:http://graph.facebook.com/user_id/picture?width=500&height=500


2

से v2.7, /<picture-id>?fields=imagesआपको छवियों के विभिन्न आकार के साथ एक सूची देगा, पहला तत्व जो पूर्ण आकार की छवि है।

मैं एक साथ कई छवियों के लिए किसी भी समाधान का पता नहीं है।


1

ग्राफ़ प्रतिक्रियाओं में पाए गए चित्र URL में (" http://photos-c.ak.fbcdn.net/ " वाले), बस डिफ़ॉल्ट "_s.jpg" को "_n.jpg" ((सामान्य आकार)) से बदलें? "_b.jpg" (? बड़ा आकार) या "_t.jpg" (थंबनेल)।

Hacakable URL / REST API वेब को बेहतर बनाते हैं।


1
हमेशा आपके अनुरोध को संसाधित करते समय एक त्रुटि हुई। संदर्भ # 50.27f74317.14274.604fb0 "अब दुर्भाग्य से
केविन

1

rest-fb उपयोगकर्ता (वर्ग छवि, बड़ा Res।): कनेक्शन myFriends = fbClient.fetchConnection ("me / friends", User.class, Parameter.with ("फ़ील्ड", "public_profile, ईमेल, first_name, last_name, लिंग, चित्र) .width (100) .height (100) "));


1

जब मैंने एक अनुरोध किया तो मुझे यह त्रुटि मिली picture.type(full_picture):

"(# 100) फ़ील्ड 'चित्र' के लिए: टाइप निम्न में से एक होना चाहिए: छोटे, सामान्य, एल्बम, बड़े, चौकोर"

जब मैं अनुरोध करता हूं picture.type(album)और picture.type(square), एक छवि 50x50 पिक्सेल आकार के साथ प्रतिक्रिया करता हूं।

जब मैं अनुरोध करता हूं picture.type(large), तो मुझे एक छवि 200x200 पिक्सेल आकार के साथ प्रतिक्रिया करता है।

जब मैं अनुरोध करता हूं picture.width(800), तो एक छवि 477x477 पिक्सेल आकार के साथ प्रतिक्रिया करता है।

के साथ picture.width(250), प्रतिक्रियाओं 320x320।

picture.width(50), प्रतिक्रियाओं के साथ 50x50।

के साथ picture.width(100), प्रतिक्रियाओं 100x100।

के साथ picture.width(150), प्रतिक्रियाओं 160x160।

मुझे लगता है कि फ़ेसबुक उन चित्रों को देता है जो उपयोगकर्ता द्वारा पहली बार उस फ़ोटो को जोड़ने पर विभिन्न आकार बदलते हैं।

मैं यहां जो देख रहा हूं वह अनुरोध है कि उपयोगकर्ता की छवि के लिए एपीआई अनुरोध की गई छवि के आकार का समर्थन नहीं करता है। यह छवि का निकटतम आकार देता है, मुझे लगता है।


सच ... "Picture.type (बड़ा)" ने भी मुझे 200x200 दिया - बहुत बड़ा नहीं जो मुझे कहना चाहिए
जेम्स


0

मुझे लगता है कि दोस्तों के बड़े चित्रों को प्राप्त करने का एकमात्र तरीका FQL का उपयोग करना है। सबसे पहले, आपको दोस्तों की एक सूची लाने की आवश्यकता है:

https://graph.facebook.com/me/friends

फिर इस सूची को पार्स करें और सभी दोस्तों को निकालें ids। जब आपके पास ऐसा हो, तो बस निम्नलिखित FQL क्वेरी को निष्पादित करें:

SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200

200यहाँ सिर्फ एक अनुकरणीय आकार है, आप कुछ भी दर्ज कर सकते हैं। आपको निम्न प्रतिक्रिया मिलनी चाहिए:

{
  "data": [
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }, 
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }
  ]
}

प्रत्येक url के साथ एक 200x200px छवि का लिंक है।


0

मैं एक ही समस्या है, लेकिन मैं अपनी समस्या को हल करने के लिए यह एक कोशिश की। यह बड़ी छवि देता है। यह बिल्कुल सही नहीं है, लेकिन आप इसे आज़मा सकते हैं।

https://graph.facebook.com/v2.0/OBJECT_ID/picture?access_token=XXXXX


अनुरोध में केवल एक और पैरामीटर जोड़ें: टाइप करें = बड़ा। कृपया नीचे मेरा जवाब जांचें।
हुला

0

प्रत्येक json ऑब्जेक्ट में url से पिक्सेल आकार को बदलकर छवि का आकार बदलने की कोशिश करें:

उदाहरण के लिए मैं s480x480 को s720x720 होने के लिए बदलता हूं

इससे पहले: https://fbcdn-sphotos-ca.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s480x480/10454308_773207880398282_283493808478577207_n.jpg

के बाद: https://fbcdn-sphotos-ca.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s720x720/10454308_773207849498282_283493808478577207_n.jpg


0

जेएस स्टाइल वेरिएंट। बस विशाल चित्र चौड़ाई निर्धारित करें और आपको सबसे बड़ा संस्करण मिलेगा।

FB.api(
  '/' + userId,
  {fields: 'picture.width(2048)'},
  function (response) {
    if (response && !response.error) {
      console.log(response.picture.data.url);
    }
  }
);

0

पूर्ण आकार की छवि प्राप्त करने के लिए आप चित्र कुंजी के बजाय full_picture का उपयोग कर सकते हैं।


0

नोट : ग्राफ एपीआई v8.0 से आप must provide the access tokenप्रत्येक उपयोगकर्ता के लिए अनुरोध करते हैं।

ग्राफ एपीआई हिटिंग:

https://graph.facebook.com/<user_id>/picture?height=1000&access_token=<any_of_above_token>

फायरबेस के साथ:

FirebaseUser user = mAuth.getCurrentUser();
String photoUrl = user.getPhotoUrl() + "/picture?height=1000&access_token=" +
  loginResult.getAccessToken().getToken();

आपको टोकन registerCallbackइसी तरह से मिलता है

       LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            FirebaseUser user = mAuth.getCurrentUser();
            String photoUrl = user.getPhotoUrl() + "/picture?height=1000&access_token=" + loginResult.getAccessToken().getToken();
        }

        @Override
        public void onCancel() {
            Log.d("Fb on Login", "facebook:onCancel");
        }

        @Override
        public void onError(FacebookException error) {
            Log.e("Fb on Login", "facebook:onError", error);
        }
    });

यह वही है जो प्रलेखन कहता है:

24 अक्टूबर, 2020 से, सभी यूआईडी-आधारित प्रश्नों के लिए एक एक्सेस टोकन की आवश्यकता होगी। यदि आप एक यूआईडी की क्वेरी करते हैं और इस प्रकार एक टोकन शामिल करना चाहिए:

  • Facebook लॉगिन प्रमाणित अनुरोधों के लिए एक उपयोगकर्ता पहुँच टोकन का उपयोग करें
  • पृष्ठ-स्कोप किए गए अनुरोधों के लिए पृष्ठ एक्सेस टोकन का उपयोग करें
  • सर्वर-साइड अनुरोधों के लिए ऐप एक्सेस टोकन का उपयोग करें
  • मोबाइल या वेब क्लाइंट-साइड अनुरोधों के लिए क्लाइंट एक्सेस टोकन का उपयोग करें

हम अनुशंसा करते हैं कि आप केवल एक क्लाइंट टोकन का उपयोग करें यदि आप अन्य टोकन प्रकारों में से एक का उपयोग करने में असमर्थ हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.