2011-12-23 10 views
5

मुझे ग्राफ एपीआई त्रुटि # 613 (संदेश: "Calls to mailbox_fql have exceeded the rate of 300 calls per 600 seconds", टाइप करें: OAuthException) मेरे ऐप का परीक्षण करते समय। यह एक डेस्कटॉप ऐप है, और एकमात्र प्रतिलिपि मेरी मशीन पर चल रही है (इसलिए केवल एक access_token और एक उपयोगकर्ता - मुझे है)।त्रुटि: "मेलबॉक्स_एफक्यूएल पर कॉल 600 सेकंड प्रति 300 कॉल की दर से अधिक हो गया है"

मैं हर 15 सेकंड में inbox एंडपॉइंट से पूछता हूं। संयुक्त, ऐप प्रति मिनट लगभग 12 एपीआई कॉल (विभिन्न अंतराल पर) बनाता है। यह लगातार जो भी कॉल 300 वें धागा लाता है उस पर असफल रहता है (inbox एंडपॉइंट के पहले पृष्ठ पर लगभग 25 धागे हैं, और मैं केवल पहला पृष्ठ ला रहा हूं)। मैं ग्राफ एपीआई में किसी भी कॉल को बैच नहीं कर रहा हूं।

मैं उद्देश्य-सी का उपयोग कर मैक ओएस एक्स 10.7 पर विकास कर रहा हूं। ग्राफ़ एपीआई को असीमित रूप से कॉल करने के लिए मैं NSURLConnection का उपयोग करता हूं। जहां तक ​​मुझे पता है, NSURLConnection द्वारा संसाधित प्रत्येक अनुरोध का परिणाम केवल फेसबुक के एपीआई के लिए एक अनुरोध होना चाहिए।

उपर्युक्त पर जाकर, मुझे यह समझने में परेशानी हो रही है कि मुझे यह त्रुटि क्यों मिल रही है। मुझे संदेह है कि ऐसा इसलिए है क्योंकि inbox एंडपॉइंट (i.e. पर एक एकल कॉल यूआरआई https://graph.facebook.com/me/inbox?access_token=... पर कॉल) को mailbox_fql पर एक से अधिक कॉल के रूप में गिना जाता है। विशेष रूप से, मुझे लगता है कि <n> धागे < एन > mailbox_fql के खिलाफ कॉल के रूप में गिना जाता है। यदि ऐसा है, तो mailbox_fql प्रति एपीआई कॉल (उदा। पर कॉल की संख्या को कम करने का कोई तरीका है, केवल <n> पूरे पहले पृष्ठ की बजाय इनबॉक्स में हाल ही के धागे)?

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

उत्तर

4

संपादित करें: यह पता चला है कि आप limit पास पैरामीटर प्राप्त कर सकते हैं, जो आश्चर्यजनक रूप से, परिणामों की संख्या को सीमित करता है। हालांकि, Developer blog इस दृष्टिकोण के साथ कुछ सीमाएं नोट करता है (अर्थात् अनुरोध किए गए अनुरोधों से कम परिणाम लौटाए जा सकते हैं यदि कुछ आपके उपयोगकर्ता को दिखाई नहीं दे रहे हैं)।

ब्लॉग मानक ग्राफ एपीआई को कॉल करते समय until और/या since को जीईटी पैरामीटर के रूप में उपयोग करने की अनुशंसा करता है। ये पैरामीटर strtotime() -compliant स्ट्रिंग (या यूनिक्स युग टाइम) लेते हैं और तदनुसार अपने परिणामों को सीमित करते हैं।

मूल जवाब इस प्रकार है:

कुछ आगे अनुसंधान के बाद, ऐसा लगता है कि मेरे विकल्प कम बार लाने या mailbox_fql के लिए कॉल की संख्या को सीमित करने के लिए कस्टम FQL प्रश्नों का उपयोग कर रहे हैं। मैं inbox एंडपॉइंट पर मानक ग्राफ़ एपीआई कॉल की प्रतिक्रिया को सीमित करने का कोई तरीका नहीं ढूंढ पाया। वर्तमान मामले में, मैं निम्न रूप में FQL क्वेरी का उपयोग कर रहा:

https://graph.facebook.com/fql?q=SELECT <fields> FROM thread WHERE folder_id=1 LIMIT <n>&access_token=... 

<fields> क्षेत्रों में से एक अल्पविराम द्वारा पृथक सूची (फेसबुक के धागे FQL डॉक्स में वर्णित) है। threadinbox एंडपॉइंट से संबंधित तालिका का शाब्दिक नाम है; नया thread एंडपॉइंट unified_thread तालिका से मेल खाता है, लेकिन यह अभी तक सार्वजनिक रूप से उपलब्ध नहीं है। folder_id=1 इंगित करता है कि हम इनबॉक्स का उपयोग करना चाहते हैं (आउटबॉक्स या अद्यतन फ़ोल्डर के विपरीत)।

प्रैक्टिस में, मैं <n> से 5 सेट कर रहा हूं, जिसके परिणामस्वरूप 15-सेकंड कॉल अंतराल का उपयोग करते समय 10 मिनट की अवधि में उचित 200 कॉल mailbox_fql पर होते हैं। मेरे परीक्षणों में, मुझे त्रुटि # 613 नहीं मिली है, इसलिए मुझे लगता है कि यह काम करता है।

मुझे कल्पना है कि यहां अधिकांश लोग पहले से ही एफक्यूएल के इंस और आउट से परिचित थे, लेकिन यह मेरे लिए नया था। मुझे उम्मीद है कि इससे कुछ अन्य मुद्दों से निपटने में मदद मिलती है!

संबंधित मुद्दे