Facebook ग्राफ़ API v2.0 + - / / me / मित्र खाली लौटता है, या केवल वे मित्र जो मेरे एप्लिकेशन का उपयोग करते हैं


366

मैं अपने मित्र का नाम और आईडी ग्राफ एपीआई v2.0 के साथ प्राप्त करने की कोशिश कर रहा हूं, लेकिन डेटा खाली है:

{
  "data": [
  ]
}

जब मैं v1.0 का उपयोग कर रहा था, तो निम्नलिखित अनुरोध के साथ सब कुछ ठीक था:

FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                              NSDictionary* result,
                                              NSError *error) {
    NSArray* friends = [result objectForKey:@"data"];
    NSLog(@"Found: %i friends", friends.count);
    for (NSDictionary<FBGraphUser>* friend in friends) {
        NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
    }
}];

लेकिन अब मुझे दोस्त नहीं मिले!


इस समस्या को दूर करने के लिए संभव है stackoverflow.com/a/25584013/2529087
java.quaso

जवाबों:


627

ग्राफ़ API के v2.0 में, कॉलिंग /me/friends उस व्यक्ति के दोस्त वापस आ जाते हैं जो ऐप का उपयोग करते हैं।

इसके अलावा, v2.0 में, आपको user_friendsप्रत्येक उपयोगकर्ता से अनुमति का अनुरोध करना होगा । user_friendsअब हर लॉगिन में डिफ़ॉल्ट रूप से शामिल नहीं है। प्रत्येक उपयोगकर्ता को user_friendsप्रतिक्रिया में प्रकट होने के लिए अनुमति देनी होगी /me/friendsफेसबुक अपग्रेड गाइड देखें में अधिक विस्तृत जानकारी के लिए, या नीचे सारांश की समीक्षा।

यदि आप गैर-एप्लिकेशन-उपयोग करने वाले दोस्तों की सूची का उपयोग करना चाहते हैं, तो दो विकल्प हैं:

  1. यदि आप अपने लोगों को उन कहानियों में अपने दोस्तों को टैग करने देना चाहते हैं जो वे आपके ऐप का उपयोग करके फेसबुक पर प्रकाशित करते हैं, तो आप/me/taggable_friendsएपीआई काउपयोग कर सकते हैं। इस एंडपॉइंट के उपयोग के लिए फेसबुक द्वारा समीक्षा की आवश्यकता होती है और इसका उपयोग केवल उस मामले के लिए किया जाना चाहिए, जहां आप दोस्तों की एक सूची प्रदान कर रहे हैं ताकि उपयोगकर्ता उन्हें किसी पोस्ट में टैग कर सके।

  2. यदि आपका ऐप एक गेम है और आपका गेम फेसबुक कैनवस का समर्थन करता है , तो आप कस्टम आमंत्रण डायलॉग/me/invitable_friends को रेंडर करने के लिए एंडपॉइंट काउपयोग कर सकते हैं, फिर इस एपीआई द्वारा लौटाए गए टोकन को मानक अनुरोध डायलॉग पर पास करें।

अन्य मामलों में, ऐप्स अब उपयोगकर्ता के दोस्तों की पूरी सूची को पुनः प्राप्त करने में सक्षम नहीं हैं (केवल उन दोस्तों को जिन्होंने विशेष रूप से user_friendsअनुमति का उपयोग करके आपके ऐप को अधिकृत किया है)। इसकी पुष्टि फेसबुक ने design बाय डिजाइन ’के रूप में की है।

उन ऐप्स के लिए जो लोगों को किसी ऐप का उपयोग करने के लिए दोस्तों को आमंत्रित करने की अनुमति देते हैं, आप अभी भी वेब पर Send Dialog या iOS और Android पर नए संदेश संवाद का उपयोग कर सकते हैं ।

अद्यतन: फेसबुक ने इन परिवर्तनों पर यहां एक FAQ प्रकाशित किया है: https://developers.facebook.com/docs/apps/faq जो दोस्तों को आमंत्रित करने के लिए डेवलपर्स के लिए उपलब्ध सभी विकल्पों की व्याख्या करते हैं आदि।


आपके अंतिम संपादन के बाद या उसी पृष्ठ पर कोई भी समाचार?
इल्या गज़मैन

taggable_friendsसमीक्षा प्रस्तुत करने के लिए आइटम नहीं देख सकते हैं ।
एलिकएल्ज़िन-किलाका

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

3
फेसबुक ने हाल ही में उपलब्ध आंकड़ों में बड़े बदलाव प्रकाशित किए हैं: चैंज देखें । taggable_friendsअब कुछ भी नहीं देता है। साथ ही, user_friendsअनुमति दिए जाने से पहले लॉगिन समीक्षा आवश्यक है ।
डंकन जोन्स

एक एपीआई प्रदान करने की क्या बात है अगर यह आपको दोस्तों को सूचीबद्ध करने जैसे बुनियादी काम नहीं करने देता है?
6infinity8

17

हालांकि साइमन क्रॉस का जवाब स्वीकार और सही है, मैंने सोचा कि मुझे इसका एक उदाहरण (एंड्रॉइड) के साथ थोड़ा गोमांस करना होगा, जिसे करने की आवश्यकता है। मैं इसे सामान्य रूप में रखूंगा और केवल प्रश्न पर ध्यान केंद्रित कर सकता हूं। व्यक्तिगत रूप से मैं एक डेटाबेस में चीजों को संग्रहीत करता हूं, ताकि लोडिंग सुचारू हो, लेकिन इसके लिए एक CursorAdapter और ContentProvider की आवश्यकता होती है, जो यहां से थोड़ा बाहर है।

मैं खुद यहाँ आया और फिर सोचा, अब क्या ?!

समस्या

User3594351 की तरह , मैं मित्र को सूचित कर रहा था डेटा रिक्त था। मुझे यह पता चला FriendPickerFragment का उपयोग करके। तीन महीने पहले क्या काम किया, अब काम नहीं करता। यहां तक ​​कि फेसबुक के उदाहरण भी टूट गए। तो मेरा मुद्दा था 'मैं हाथ से फ्रेंडपिकफ्रैगमेंट कैसे बनाऊं?

क्या काम नहीं किया

साइमन क्रॉस से विकल्प # 1 ऐप को दोस्तों को आमंत्रित करने के लिए पर्याप्त मजबूत नहीं था। साइमन क्रॉस ने भी अनुरोध डायलॉग की सिफारिश की, लेकिन वह केवल एक बार में पांच अनुरोधों की अनुमति देगा। अनुरोध संवाद भी सत्र में लॉग इन किए गए किसी भी फेसबुक के दौरान समान दोस्त दिखाते हैं। उपयोगी नहीं।

क्या काम किया (सारांश)

विकल्प # 2 कुछ कड़ी मेहनत के साथ। आपको यह सुनिश्चित करना होगा कि आप फेसबुक के नए नियमों को पूरा करें: 1.) आप एक गेम हैं 2.) आपके पास एक कैनवस ऐप (वेब ​​प्रेजेंस) 3.) आपका ऐप फेसबुक के साथ पंजीकृत है। यह सब फेसबुक डेवलपर वेबसाइट पर सेटिंग्स के तहत किया जाता है ।

मेरे app के अंदर हाथ से दोस्त पिकर का अनुकरण करने के लिए मैंने निम्नलिखित किया:

  1. एक टैब गतिविधि बनाएं जो दो टुकड़े दिखाती है। प्रत्येक टुकड़ा एक सूची दिखाता है। उपलब्ध दोस्त के लिए एक टुकड़ा ( / / मेरे दोस्त ) और दूसरा मित्र के लिए ( / मुझे / आक्रामक / मित्र )। दोनों टैब रेंडर करने के लिए एक ही टुकड़े कोड का उपयोग करें।
  2. एक AsyncTask बनाएं जिसमें फेसबुक से फ्रेंड डेटा मिलेगा। एक बार जब वह डेटा लोड हो जाता है, तो उसे एडॉप्टर पर टॉस करें, जो स्क्रीन के मानों को प्रस्तुत करेगा।

विवरण

AsynchTask

private class DownloadFacebookFriendsTask extends AsyncTask<FacebookFriend.Type, Boolean, Boolean> {

    private final String TAG = DownloadFacebookFriendsTask.class.getSimpleName();
    GraphObject graphObject;
    ArrayList<FacebookFriend> myList = new ArrayList<FacebookFriend>();

    @Override
    protected Boolean doInBackground(FacebookFriend.Type... pickType) {
        //
        // Determine Type
        //
        String facebookRequest;
        if (pickType[0] == FacebookFriend.Type.AVAILABLE) {
            facebookRequest = "/me/friends";
        } else {
            facebookRequest = "/me/invitable_friends";
        }

        //
        // Launch Facebook request and WAIT.
        //
        new Request(
            Session.getActiveSession(),
            facebookRequest,
            null,
            HttpMethod.GET,
            new Request.Callback() {
                public void onCompleted(Response response) {
                    FacebookRequestError error = response.getError();
                    if (error != null && response != null) {
                        Log.e(TAG, error.toString());
                    } else {
                        graphObject = response.getGraphObject();
                    }
                }
            }
        ).executeAndWait();

        //
        // Process Facebook response
        //
        //
        if (graphObject == null) {
            return false;
        }

        int numberOfRecords = 0;
        JSONArray dataArray = (JSONArray) graphObject.getProperty("data");
        if (dataArray.length() > 0) {

            // Ensure the user has at least one friend ...
            for (int i = 0; i < dataArray.length(); i++) {

                JSONObject jsonObject = dataArray.optJSONObject(i);
                FacebookFriend facebookFriend = new FacebookFriend(jsonObject, pickType[0]);

                if (facebookFriend.isValid()) {
                    numberOfRecords++;

                    myList.add(facebookFriend);
                }
            }
        }

        // Make sure there are records to process
        if (numberOfRecords > 0){
            return true;
        } else {
            return false;
        }
    }

    @Override
    protected void onProgressUpdate(Boolean... booleans) {
        // No need to update this, wait until the whole thread finishes.
    }

    @Override
    protected void onPostExecute(Boolean result) {
        if (result) {
            /*
            User the array "myList" to create the adapter which will control showing items in the list.
             */

        } else {
            Log.i(TAG, "Facebook Thread unable to Get/Parse friend data. Type = " + pickType);
        }
    }
}

FacebookFriend वर्ग मैंने बनाया

public class FacebookFriend {

    String facebookId;
    String name;
    String pictureUrl;
    boolean invitable;
    boolean available;
    boolean isValid;
    public enum Type {AVAILABLE, INVITABLE};

    public FacebookFriend(JSONObject jsonObject, Type type) {
        //
        //Parse the Facebook Data from the JSON object.
        //
        try {
            if (type == Type.INVITABLE) {
                //parse /me/invitable_friend
                this.facebookId =  jsonObject.getString("id");
                this.name = jsonObject.getString("name");

                // Handle the picture data.
                JSONObject pictureJsonObject = jsonObject.getJSONObject("picture").getJSONObject("data");
                boolean isSilhouette = pictureJsonObject.getBoolean("is_silhouette");
                if (!isSilhouette) {
                    this.pictureUrl = pictureJsonObject.getString("url");

                } else {
                    this.pictureUrl = "";
                }

                this.invitable = true;
            } else {
                // Parse /me/friends
                this.facebookId =  jsonObject.getString("id");
                this.name = jsonObject.getString("name");
                this.available = true;
                this.pictureUrl = "";
            }

            isValid = true;
        } catch (JSONException e) {
            Log.w("#", "Warnings - unable to process Facebook JSON: " + e.getLocalizedMessage());
        }
    }
}

20
गैर-गेमिंग ऐप्स के बारे में कैसे? एक डेटिंग वेबसाइट ... लोगों को खोजने के लिए एक खेल, रेस्तरां खोजने के लिए एक ऐप ... रेस्तरां खोजने के लिए एक खेल, आदि आपको विचार मिलते हैं। तो क्या यह वास्तव में खेल के करीब है या यह आपको फेसबुक के अंदर एक ऐप रखने और उनके विज्ञापन प्लेटफॉर्म पर पैसा खर्च करने के लिए मजबूर करने का एक तरीका है? कौन तय करने वाला है कि खेल क्या है? किसने तय किया कि आपका ऐप वास्तव में एक खेल है या नहीं? इस पर मुझे गलत मत समझो, लेकिन मेरे लिए यह गैर-गेमिंग ऐप्स को ब्लॉक करने का कोई मतलब नहीं है जब तक कि आप उन्हें फेसबुक पारिस्थितिकी तंत्र का उपयोग करने के लिए मजबूर नहीं करना चाहते।
मेरियो

@ मायरो कि हुड के तहत फेसबुक का इरादा है। आप कुछ भी डाल सकते हैं और इसे एक खेल के रूप में चिह्नित कर सकते हैं क्योंकि उन्हें परवाह नहीं है कि क्या यह वास्तव में एक खेल है या नहीं। वे सभी आपकी जेब से पैसा प्राप्त कर रहे हैं।
सैंडलोन

12

फेसबुक ने अब अपनी नीतियों को संशोधित किया है। यदि आपके ऐप में कैनवस कार्यान्वयन नहीं है और यदि आपका ऐप गेम नहीं है तो आप पूरी फ्रेंडलिस्ट वैसे भी प्राप्त नहीं कर सकते। बेशक वहाँ भी taggable_friends है, लेकिन वह केवल टैगिंग के लिए है।

आप उन दोस्तों की सूची खींचने में सक्षम होंगे जिन्होंने केवल ऐप को अधिकृत किया है।

ग्राफ़ एपीआई 1.0 का उपयोग करने वाले ऐप 30 अप्रैल, 2015 तक काम करेंगे और इसके बाद इसे अपग्रेड किया जाएगा।

इस पर अधिक जानकारी प्राप्त करने के लिए निम्नलिखित देखें:


3

में स्विफ्ट 4.2 और Xcode 10.1:

यदि आप फेसबुक से दोस्तों की सूची प्राप्त करना चाहते हैं, तो आपको फेसबुक में समीक्षा के लिए अपना ऐप सबमिट करना होगा। कुछ लॉगिन अनुमतियाँ देखें:

लॉगिन अनुमतियाँ

यहाँ दो चरण हैं:

1) सबसे पहले आपके ऐप का स्टेटस लाइव में होना चाहिए

2) आवश्यक अनुमतियां प्राप्त करें फेसबुक।

1) हमारी एप्लिकेशन स्थिति को लाइव सक्षम करें:

  1. एप्स पेज पर जाएं और अपना एप चुनें

    https://developers.facebook.com/apps/

  2. डैशबोर्ड में शीर्ष दाईं ओर स्थिति का चयन करें ।

    यहां छवि विवरण दर्ज करें

  3. गोपनीयता नीति URL सबमिट करें

    यहां छवि विवरण दर्ज करें

  4. श्रेणी का चयन करें

    यहां छवि विवरण दर्ज करें

  5. अब हमारा ऐप लाइव स्थिति में है।

    यहां छवि विवरण दर्ज करें

एक कदम पूरा हुआ।

2) समीक्षा के लिए हमारा ऐप सबमिट करें:

  1. पहले आवश्यक अनुरोध भेजें।

    उदाहरण: user_friends, user_videos, user_posts, आदि।

    यहां छवि विवरण दर्ज करें

  2. दूसरा, करंट रिक्वेस्ट पेज पर जाएं

    यहां छवि विवरण दर्ज करें

    उदाहरण: user_events

  3. सभी विवरण जमा करें

    यहां छवि विवरण दर्ज करें

  4. सभी अनुरोधों के लिए यह सबमिट करें (user_friends, user_events, user_videos, user_posts, आदि)।

  5. अंत में समीक्षा के लिए अपना ऐप सबमिट करें।

    यदि आपकी समीक्षा फेसबुक की ओर से स्वीकार की जाती है, तो आप अब संपर्क, आदि पढ़ने के लिए योग्य हैं।


3
user_friendsअनुमति बहुत सीमित है। फेसबुक के प्रलेखन (अप्रैल, 2019) से: [यह केवल] उन मित्रों की सूची तक पहुंचने के लिए ऐप की अनुमति देता है जो उक्त ऐप का भी उपयोग करते हैं। यह अनुमति सीमित भागीदारों के लिए सीमित है और उपयोग के लिए फेसबुक द्वारा पूर्व स्वीकृति की आवश्यकता है। किसी व्यक्ति को दूसरे की मित्र सूची में दिखाने के लिए, दोनों लोगों ने अपने दोस्तों की सूची को ऐप के साथ साझा किया होगा और लॉगिन के दौरान इस अनुमति को अक्षम नहीं किया होगा।
दक्षिणायन

2

जैसा कि साइमन ने उल्लेख किया है, नए फेसबुक एपीआई में यह संभव नहीं है। शुद्ध तकनीकी रूप से बोलना आप इसे ब्राउज़र ऑटोमेशन के माध्यम से कर सकते हैं।

  • यह फेसबुक नीति के खिलाफ है, इसलिए आप जिस देश में रहते हैं, उसके आधार पर यह कानूनी नहीं हो सकता है
  • आपको अपने क्रेडेंशियल्स का उपयोग करना होगा / क्रेडेंशियल्स के लिए उपयोगकर्ता से पूछना होगा और संभवतः उन्हें स्टोर करना होगा (पासवर्ड भी सममित रूप से एन्क्रिप्ट किया गया एक अच्छा विचार नहीं है)
  • जब फेसबुक अपना एपीआई बदलता है, तो आपको ब्राउज़र ऑटोमेशन कोड को भी अपडेट करना होगा (यदि आप अपने एप्लिकेशन के अपडेट को बाध्य नहीं कर सकते हैं, तो आपको ब्राउज़र ऑटोमेशन के टुकड़े को वेबसर्विस के रूप में बाहर रखना चाहिए)
  • यह OAuth अवधारणा को दरकिनार कर रहा है
  • दूसरी ओर, मेरी भावना यह है कि मैं अपने डेटा को अपने दोस्तों की सूची में शामिल कर रहा हूं और फेसबुक मुझे एपीआई के माध्यम से उन तक पहुंचने से प्रतिबंधित नहीं करना चाहिए।

WatiN का उपयोग करके नमूना कार्यान्वयन :

class FacebookUser
{
  public string Name { get; set; }
  public long Id { get; set; }
}

public IList<FacebookUser> GetFacebookFriends(string email, string password, int? maxTimeoutInMilliseconds)
{
  var users = new List<FacebookUser>();
  Settings.Instance.MakeNewIeInstanceVisible = false;
  using (var browser = new IE("https://www.facebook.com"))
  {
    try
    {
      browser.TextField(Find.ByName("email")).Value = email;
      browser.TextField(Find.ByName("pass")).Value = password;
      browser.Form(Find.ById("login_form")).Submit();
      browser.WaitForComplete();
    }
    catch (ElementNotFoundException)
    {
      // We're already logged in
    }
    browser.GoTo("https://www.facebook.com/friends");
    var watch = new Stopwatch();
    watch.Start();

    Link previousLastLink = null;
    while (maxTimeoutInMilliseconds.HasValue && watch.Elapsed.TotalMilliseconds < maxTimeoutInMilliseconds.Value)
    {
      var lastLink = browser.Links.Where(l => l.GetAttributeValue("data-hovercard") != null
                       && l.GetAttributeValue("data-hovercard").Contains("user.php")
                       && l.Text != null
                     ).LastOrDefault();

      if (lastLink == null || previousLastLink == lastLink)
      {
        break;
      }

      var ieElement = lastLink.NativeElement as IEElement;
      if (ieElement != null)
      {
        var htmlElement = ieElement.AsHtmlElement;
        htmlElement.scrollIntoView();
        browser.WaitForComplete();
      }

      previousLastLink = lastLink;
    }

    var links = browser.Links.Where(l => l.GetAttributeValue("data-hovercard") != null
      && l.GetAttributeValue("data-hovercard").Contains("user.php")
      && l.Text != null
    ).ToList();

    var idRegex = new Regex("id=(?<id>([0-9]+))");
    foreach (var link in links)
    {
      string hovercard = link.GetAttributeValue("data-hovercard");
      var match = idRegex.Match(hovercard);
      long id = 0;
      if (match.Success)
      {
        id = long.Parse(match.Groups["id"].Value);
      }
      users.Add(new FacebookUser
      {
        Name = link.Text,
        Id = id
      });
    }
  }
  return users;
}

इस दृष्टिकोण के कार्यान्वयन के साथ प्रोटोटाइप (C # / WatiN का उपयोग करके) https://github.com/svejdo1/Shadowbpi देखें । यह फेसबुक कनेक्टर के डायनेमिक अपडेट को भी अनुमति दे रहा है जो आपके संपर्कों की सूची को पुनः प्राप्त कर रहा है।


2
आपका कोड मानता है कि ऐप के पास उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड तक पहुंच है। यह नहीं है कि OAuth कैसे काम करता है, और अधिकांश उपयोगकर्ता अपने FB उपयोगकर्ता नाम और पासवर्ड को किसी एप्लिकेशन को प्रदाता करने के लिए नहीं जा रहे हैं। यह एक बड़ा सुरक्षा जोखिम होगा।
jbustamovej

32
यह फेसबुक की नीति के खिलाफ है। इस सलाह का पालन नहीं किया जाना चाहिए।
साइमन क्रॉस

3
एक अन्य नोट पर, आप अपने उपयोगकर्ता की साख को अपने हैक में सुरक्षित रखना भी नहीं चाहते हैं। बस अगर कोई आपके कोड का उपयोग करने का फैसला करता है, तो कृपया सुनिश्चित करें कि यह SSL को uri से बदलकर https का उपयोग करता है।
रोगाला

8
प्लस एक यह उनके चेहरे shoving के लिए!
स्काईनेट

12
आप सभी को लगता है कि फेसबुक की नीतियां कुछ तरह के अंतर्राष्ट्रीय कानून हैं और इसे तोड़कर आप एक अपराधी हैं। इसके अलावा, आपको लगता है कि फ़ेसबुक उपयोगकर्ता के लिए केवल सबसे अच्छा है, जो मुझे लगता है कि गलत है जैसा कि @OndrejSvejdar ने कहा है, क्योंकि तब वे आपको यह चुनने देंगे कि क्या आप अन्य ऐप में देखना चाहते हैं। मुझे लगता है कि यह फ़्री फ़ॉर फ़ॉर फ़ोर फ़ोर प्लेटफ़ॉर्म के ज़रिए दूसरों के विकास को बाधित करने का एक कदम है। इसके बजाय लोगों को अपने ऐप, सेवाओं, गेम, समाचार आदि को सीधे फेसबुक पर विकसित करना शुरू कर देना चाहिए। और अगर वे नहीं करेंगे तो फेसबुक विज्ञापन के लिए भुगतान करें।
जस्टगोसा

2

प्रयास करें /me/taggable_friends?limit=5000अपना JavaScript कोड का उपयोग कर

या

ग्राफ़ API आज़माएँ :

https://graph.facebook.com/v2.3/user_id_here/taggable_friends?access_token=


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

{[data ": []," सारांश ": {" total_count ": 414}} मुझे यह json डेटा ब्लॉक शून्य मिला, मित्र नहीं मिले। मैं क्या कर सकता हूँ?
मैक्वीन

-1

Facebook SDK ग्राफ़ API v2.0 या इसके बाद के संस्करण में, आपको Facebook लॉगिन के समय में प्रत्येक उपयोगकर्ता से user_friends की अनुमति का अनुरोध करना होगा क्योंकि user_friends अब हर लॉगिन में डिफ़ॉल्ट रूप से शामिल नहीं है; हमें वह जोड़ना होगा।

प्रत्येक उपयोगकर्ता को / me / दोस्तों के जवाब में प्रदर्शित होने के लिए user_friends की अनुमति प्रदान करनी होगी ।

let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = FBSDKLoginBehavior.web
fbLoginManager.logIn(withReadPermissions: ["email","user_friends","public_profile"], from: self) { (result, error) in
    if (error == nil) {

        let fbloginresult : FBSDKLoginManagerLoginResult = result!
        if fbloginresult.grantedPermissions != nil {
            if (fbloginresult.grantedPermissions.contains("email")) {
                // Do the stuff
            }
            else {
            }
        }
        else {
        }
    }
}

तो फेसबुक लॉगिन के समय, यह एक स्क्रीन के साथ संकेत देता है जिसमें सभी अनुमतियाँ होती हैं:

यहां छवि विवरण दर्ज करें

यदि उपयोगकर्ता जारी रखें बटन दबाता है , तो अनुमतियाँ सेट की जाएंगी। जब आप ग्राफ़ एपीआई का उपयोग करके दोस्तों की सूची का उपयोग करते हैं, तो आपके मित्र जो ऊपर दिए गए आवेदन में लॉग इन करते हैं, उन्हें सूचीबद्ध किया जाएगा

if ((FBSDKAccessToken.current()) != nil) {
    FBSDKGraphRequest(graphPath: "/me/friends", parameters: ["fields" : "id,name"]).start(completionHandler: { (connection, result, error) -> Void in
        if (error == nil) {

            print(result!)
        }
    })
}

आउटपुट में वे उपयोगकर्ता शामिल होंगे जिन्होंने Facebook के माध्यम से आपके आवेदन में लॉगिन के समय user_friends की अनुमति दी थी।

{
    data = (
             {
                 id = xxxxxxxxxx;
                 name = "xxxxxxxx";
             }
           );
    paging = {
        cursors = {
            after = xxxxxx;
            before = xxxxxxx;
        };
    };
    summary = {
        "total_count" = 8;
    };
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.