ग्राफ एपीआई का उपयोग कर फेसबुक 'Friends.getAppUsers'


87

मेरे पास एक एप्लिकेशन है जो Friends.getAppUsersवर्तमान उपयोगकर्ता के लिए दोस्तों की सूची प्राप्त करने के लिए पुराने रीस्ट एपीआई कॉल का उपयोग करता है जिन्होंने मेरे आवेदन को अधिकृत किया है।

मैंने प्रलेखन पढ़ा है, मैं ग्राफ़ एपीआई के साथ ऐसा कैसे करूं? इसका एक उदाहरण क्या होगा?

जवाबों:


119

मैंने थोड़ी देर के लिए चारों ओर खोज की, और मुझे भी लगा कि यह ग्राफ एपीआई का उपयोग करना संभव नहीं है।

हालाँकि, मैंने एक समान प्रश्न पोस्ट किया है, पुराने गेटऐपर्स के लिए रिप्लेसमेंट एक उपयोगकर्ता के दोस्तों को देखने के लिए कॉल करता है जो मेरे आवेदन का उपयोग करते हैं? , विशिष्ट एपीआई के लिए मैं उपयोग कर रहा था और एक महान सामान्य उत्तर दिया गया था।

https://graph.facebook.com/me/friends?fields=installed

या अधिक आम तौर पर

https://graph.facebook.com/{user id}/friends?fields=installed

यह उन सभी मित्रों को देता है, जो उन दोस्तों के लिए "इंस्टॉल = सच्चा" अतिरिक्त फ़ील्ड के साथ हैं जो एप्लिकेशन का उपयोग करते हैं।

यह ग्राफ़ एपीआई एक्सप्लोरर में काम कर रहा है :


4
हां; मैंने आपके सवाल का इस जवाब के साथ जवाब दिया: facebook.stackoverflow.com/questions/7956639/…
Igy

2
यह क्वेरी किस एप्लिकेशन के लिए इंस्टालेशन की जाँच करती है?
आईओएस मॉन्स्टर

3
यह मानकर कि आप किसी भी अन्य फ़ील्ड (जैसे ई-मेल, जन्मदिन, आदि) का उपयोग नहीं कर रहे हैं, पूर्णता उपयोग के लिए /me/friends?fields=id,name,installed, जो फ़ील्ड ऑर्डर और मानक जानकारी को संरक्षित करता है जो ?fields=परिभाषित किए बिना वापस आ जाता है (2012/12/05 पर सही)।
plasmid87

5
इस लेखन के समय, यह क्वेरी सभी दोस्तों को वापस कर देती है (जिसके लिए भी installedयह सच नहीं है)। हमें मैन्युअल रूप से जांचना होगा कि क्या installedप्रत्येक उपयोगकर्ता के लिए क्षेत्र मौजूद है।
पंकज भंभानी

हां, यह सही है, मैंने यह स्पष्ट करने के लिए उत्तर को संपादित किया है कि आपको सभी दोस्त मिलते हैं और आपको यह जांचना होगा कि किन लोगों के पास स्थापित झंडा है।
एलेक्स

27

यह FQL के साथ किया जा सकता है।

SELECT uid FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?)
AND is_app_user = 1

QED!


1
मैंने मूल रूप से इस क्वेरी का उपयोग किया है और विलंबता के कारण अब मुझे ग्राफ़ एपीआई के माध्यम से सभी दोस्त मिलते हैं और फिर इसके बजाय मेरे आवेदन पक्ष को फ़िल्टर करते हैं।
रिचर्ड

क्या आप विलंबता के बारे में अधिक जानकारी दे सकते हैं? क्या यह प्रतिक्रिया देने में बहुत लंबा समय ले रहा है? मैं लगभग 300+ दोस्तों के साथ एक एफबी खाते के साथ परीक्षण कर रहा हूं और प्रतिक्रिया समय कुछ सेकंड (2 से 4) रहा है, जो बहुत खराब आईएमओ नहीं है।
loungerdork

1
हाँ, यह मोटे तौर पर मैं क्या देख रहा हूँ। 400 से अधिक दोस्तों को वापस करने के लिए ग्राफ एपीआई 500ms के क्रम में लेता है, इसलिए मैं उन सभी को प्राप्त करना पसंद करता हूं और फिर अपनी तरफ से फ़िल्टर करता हूं।
रिचर्ड

3
तुम भी के me()बजाय का उपयोग कर सकते हैं ?
फिल्पेरो

8

हाँ, ग्राफ़ एपीआई बहुत ही प्रलेखित है। मुझे "एप्लिकेशन" प्रकार के लिए कोई दस्तावेज़ नहीं दिख रहा है , लेकिन वे डॉक्स में किसी एप्लिकेशन की जानकारी का संदर्भ देते हैं:

https://graph.facebook.com/2439131959

तो, शायद आप समूह वाक्यविन्यास का उपयोग करके आवेदन के सदस्य प्राप्त कर सकते हैं?

https://graph.facebook.com/2439131959/members

इसका परीक्षण करने के लिए आपको एक प्रमाणित सत्र की आवश्यकता होगी। अन्यथा, ऐसा लगता है कि फेसबुक हमें सीधे सवाल भेजने के लिए FQL का उपयोग करने के लिए प्रेरित कर रहा है:

http://developers.facebook.com/docs/reference/fql/application

आप https://api.facebook.com/method/fql.query?query=QUERY प्राप्त करके FQL प्रश्नों का निष्पादन कर सकते हैं । आप प्रतिसाद स्वरूप पैरामीटर के साथ XML या JSON के रूप में प्रतिक्रिया प्रारूप निर्दिष्ट कर सकते हैं।

तो आप अपने आवेदन के बारे में जानकारी प्राप्त करने के लिए एक FQL क्वेरी पारित कर सकते हैं।


2
ओह। लगता है कि ग्राफ एपीआई में प्रकाश स्विचन एक सिरदर्द की अधिकता है जिसे मैंने मूल रूप से उम्मीद की थी।
रिचर्ड

4
FQL का उपयोग करके (प्रकाशन को छोड़कर) आपको अपनी आवश्यकता के अनुसार सब कुछ करना आसान है। ग्राफ एपीआई, सबसे कम, आपको वह सब कुछ नहीं देगा जिसकी आपको ज़रूरत है, और सबसे अच्छे रूप में, यह कैसे करना है, यह पता लगाने के लिए यह चिड़चिड़ा बना देगा।
डैनियल शेफ़र

6

पुराना रीस्ट एपीआई:

$facebook->api_client->friends_getAppUsers();

नया ग्राफ एपीआई:

$facebook->api(array('method' => 'friends.getAppUsers'));

4
यह एसडीके मेथड कॉल कवर के तहत पुराने बाकी एप का उपयोग करता है। यह ग्राफ एपीआई नहीं है :-(
रिचर्ड

5

मैंने इस मुद्दे पर बहुत जांच की है। मैं जो बता सकता हूं, उसमें Friends.getAppUsersग्राफ एपीआई का उपयोग करने का कोई तरीका नहीं है। फेसबुक द्वारा उपलब्ध कराए गए नवीनतम एसडीके एप्लिकेशन का उपयोग करने वाले दोस्तों को प्राप्त करने के लिए पुराने रीस्ट एपीआई का उपयोग करते हैं।


6
यह बहुत पुराना है और अब सही उत्तर नहीं है। शीर्ष पर एलेक्स के जवाब की जाँच करें।
बाख

यह सही उत्तर नहीं हो सकता है, लेकिन यह ओपी का जवाब है, और यह स्पष्ट रूप से बेहतर है कि सही उत्तर के रूप में सही उत्तर को चिह्नित करने की तुलना में अपने आप को बेहतर बनाएं क्योंकि अहंकार।
अजाक्स

4

RestFB का उपयोग करते हुए , मैंने निम्नलिखित किया (मार्गदर्शन के लिए धन्यवाद Igy / एलेक्स)। ध्यान दें कि फेसबुक उपयोगकर्ता द्वारा स्थापित होने पर "स्थापित" = सही के साथ मित्र आईडी की एक सरणी देता है (जैसा कि यहां देखा जा सकता है )।

पहले installedफ़ील्ड को जोड़ते हुए, उपयोगकर्ता वर्ग का विस्तार करें :

import com.restfb.Facebook;
import com.restfb.types.User;

public class InstalledUser extends User {

    @Facebook
    private boolean installed;

    public InstalledUser() {        
    }

    public boolean getInsatlled() {
        return installed;
    }
}

अगला, DefaultFacebookClient का उपयोग कर:

FacebookClient facebook = new DefaultFacebookClient(pFacebookAccessToken);
Connection<InstalledUser> installedFacebookUsers = facebook.fetchConnection("/" + pFacebookId + "/friends", InstalledUser.class, Parameter.with("fields", "installed"));        
for (List<InstalledUser> friends : installedFacebookUsers) {
    for (InstalledUser friend : friends) {
        if (friend.getInsatlled()) {
            // Add friend.getId() to a list of ID, or whatever
        }
    }
}

1

वर्कअराउंड अपने आप को फ़िल्टर करना है। संभवतया, आपके पास उन सभी यूआईडी उपयोगकर्ताओं का है जिन्होंने आपके डेटाबेस में बैठे आपके आवेदन के लिए साइन अप किया है। इसलिए पहले सभी यूजर्स के फ्रेंड्स के यूआईडी प्राप्त करें, और उन यूजर्स को अपने डेटाबेस से चुनें, जिनके पास मैचिंग यूड्स हैं।

नया फेसबुक ग्राफ़ एपीआई प्रोग्राम बहुत खराब तरीके से निष्पादित किया गया है और इसके माध्यम से नहीं सोचा गया है। ऐसा लगता है कि वे परिपक्व होने से पहले फेसबुक f8 के लिए इसे प्रकाशित करने के लिए पहुंचे , और बहुत सारी कार्यक्षमता गायब है जो पहले उपलब्ध थी।


0

आप अभी भी पुराने REST API को नए ग्राफ़ API में कॉल कर सकते हैं। यह पूरी तरह से मान्य है।

एक वैकल्पिक तरीका एप्लिकेशन उपयोगकर्ता के दोस्तों को प्राप्त करने के लिए FQL का उपयोग करना है।

मुझे यकीन नहीं है कि वहाँ सिर्फ ग्राफ एपीआई का उपयोग कर ऐसा करने का एक तरीका है।

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