2011-12-17 11 views
5

मैं केवल "publ_actions" अनुमति और समयरेखा वाले उपयोगकर्ताओं के लिए कुछ विशेषताओं को सक्षम करना चाहता हूं। उपयोगकर्ता ने टाइमलाइन को सक्षम करने का तरीका कैसे पता लगाया?मैं यह देखने के लिए कैसे जांच सकता हूं कि उपयोगकर्ता के पास टाइमलाइन है या नहीं?

उत्तर

3

1) आंशिक समाधान यह जांचना है कि उपयोगकर्ता के पास "कवर फोटो" नामक एल्बम है या नहीं। यद्यपि अधिकांश उपयोगकर्ता जो टाइमलाइन को सक्रिय नहीं करते थे, लेकिन इस एल्बम में नहीं होगा !!

2) वास्तव में उपयोगकर्ता की प्रोफ़ाइल की HTML सामग्री पुनर्प्राप्त करना और यह जांचना है कि इसकी समयरेखा है या नहीं!

4

वर्तमान में यह देखने के लिए कोई API तरीका नहीं है कि उपयोगकर्ता ने टाइमलाइन सक्षम की है या नहीं।

आप का उपयोग करने के "Add To Timeline (beta)" social pluginFacebook JS-SDK Events के साथ संयोजन में (perms रूप publish_actions गुजर) की कोशिश कर सकते हैं।

auth.login, auth.authResponseChange और/या auth.statusChange घटनाओं की सदस्यता लें और response घटना श्रोता के लिए पारित की status संपत्ति की जाँच, एक बार घटना निकाल दिया और उपयोगकर्ता connected है आप publish action और अगर एक है जो समय स्थापित किया है के रूप में उपयोगकर्ता निशान सफल होने के कर सकते हैं।

हालांकि यह कुछ कमियां हैं:

  • बेहतर अलावा अन्य प्रवाह में publish_actions के लिए उपयोगकर्ताओं को पूछने के लिए नहीं सुनिश्चित हो सामाजिक प्लगइन सुनिश्चित करने के लिए "समय के लिए जोड़ें" वे दोनों समय और अनुमति दे दी है।
  • आपको यह सुनिश्चित करने के लिए कार्रवाई प्रकाशित करनी चाहिए कि उन्होंने ऐसा करने की अनुमति दी है, क्योंकि ये घटनाएं अन्य उपयोगकर्ता क्रियाएं हो सकती हैं (जैसे पासवर्ड परिवर्तन या फेसबुक उपयोगकर्ता स्विचिंग, आदि ...)।
1

आखिरकार (निकट भविष्य में) हर किसी की प्रोफ़ाइल टाइमलाइन पर ले जाया जाएगा, इसलिए ऐसा लगता है कि फेसबुक ने टाइमलाइन-सक्षम ऐप का पता लगाने के लिए एक विश्वसनीय तरीका प्रदान नहीं किया है।

1

निम्नलिखित संभावित समाधान के लिए कोई अतिरिक्त अनुमति अनुरोध की आवश्यकता नहीं है। यदि आप एक गुप्त डीआईवी के भीतर फेसबुक टाइमलाइन प्लगइन कोड जोड़ते हैं तो आप एफबी कैनवास लोड होने के बाद तक प्रतीक्षा कर सकते हैं (या वेब पृष्ठों में xfbml) और उस तत्व की सीएसएस ऊंचाई का परीक्षण करें। यदि उपयोगकर्ता के पास टाइमलाइन नहीं है तो यह 0px होगा। अन्यथा, यह 250px होगा (जैसा कि मैंने इसे शामिल किया है)। यह केवल फेसबुक ऐप्स के अंतर्गत काम करता है (फेसबुक में नहीं वेब पृष्ठों को एकीकृत):

फेसबुक इस प्लगइन तत्व उपयोगकर्ता 0.

के तत्व शैली ऊंचाई निर्धारित करके समय सक्रिय नहीं किया है, तो करने के लिए इस जोड़े को छुपाता है आपके एप्लिकेशन पेज:

<div id="timeline-hidden" style="display:none"> 
    <div class="fb-add-to-timeline" data-show-faces="true"></div> 
</div> 
<div id="timeline-test"></div> 

फिर, अपने जावास्क्रिप्ट (इस प्रयोग jQuery, FYI करें) में:

window.fbAsyncInit = function() { 
FB.init({ ... }); // after your FB.init code 

    FB.Canvas.setDoneLoading(
    function (result) { 

    var str_timeline; 
    var tlsrc = $("#timeline-hidden").find("iframe").first().css("height"); 

    if("0px"==tlsrc) 
     str_timeline = '<h2 style="color:red">This user DOES NOT have timeline.<h2>'; 
    else 
     str_timeline = "<h2>This user DOES have timeline.</h2>"; 

    $("#timeline-test").html(str_timeline + ", timeline plugin css height:" + tlsrc + ", loadtime: " + result.time_delta_ms); 
    } 
); 

}; 

वेब एकीकरण के लिए निम्नलिखित कुछ हद तक संभावित नेटवर्क विलंबता की वजह से कम विश्वसनीय है, लेकिन अवधारणा कुछ से समस्या का समाधान करने के लिए संशोधित किया जा सकता है:

FB.Canvas.setDoneLoading के बाद से एक वेबसाइट है कि अमेरिकन प्लान एकीकरण भी शामिल है पर बुलाया नहीं है, xfbml की सदस्यता लेने के लिए उपरोक्त FB.Canvas.setDoneLoading फ़ंक्शन को संशोधित करें।कार्रवाई प्रस्तुत करें और परीक्षण पर एक टाइमआउट डालें:

window.fbAsyncInit = function() { FB.init ({...}); // आपके FB.init कोड

$(document).ready(function() { 
    FB.Event.subscribe('xfbml.render', 
    function() { 
    setTimeout(function(){ 
     var str_timeline; 
     var tlsrc = $("#timeline-hidden").find("iframe").first().css("height"); 

     if("0px"==tlsrc) 
      str_timeline = '<strong><span style="color:red">This user DOES NOT have timeline.</span></strong>'; 
     else 
      str_timeline = "<strong>This user DOES have timeline.</strong>"; 


     $("#timeline-test").html(str_timeline + ", timeline plugin css height:" + tlsrc); 
    }, 250); 
    } 
); 

}); 

};

मैं अपने परीक्षण में पाया है कि (समारोह एक $ (document) .ready में FB.Event.subscribe ('xfbml.render', चलती() {...}); में मदद करता है विलंबता के साथ जब आपका ऐप किसी फेसबुक पेज में एम्बेडेड होता है (लोड करने में थोड़ा समय लगता है)। बस इसे जांचना शुरू कर दिया है, इसलिए यह आगे परीक्षण करने के लिए हो सकता है या नहीं।

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

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