2011-12-17 25 views

cevap

3

1) Kısmi bir çözüm, kullanıcının "kapak fotoğrafları" adlı bir albüme sahip olup olmadığını kontrol etmektir. Her zaman olmasa da, zaman çizelgesini aktif hale getirecek olan MOST kullanıcılarının hepsi bu albüme sahip olacaktı!

2) Bir kullanıcının profilinin html içeriğini almanın ve bir zaman çizelgesi olup olmadığını kontrol etmenin kesin bir yolu!

4

Şu anda, kullanıcının zaman çizelgesinin etkin olup olmadığını kontrol etmek için bir API yolu yoktur.

Sen "Add To Timeline (beta)" social pluginFacebook JS-SDK Events ile birlikte (perms olarak publish_actions geçen) kullanmayı deneyebilirsiniz. Olay ateş ve kullanıcının publish action ve eğer zaman çizelgesi yüklü biri olarak işaret kullanıcıyı başarılı olabilir connected bir kez

, auth.login, auth.authResponseChange ve/veya auth.statusChange olayları abone ve olay dinleyicisi geçirilen response arasında status özelliğini kontrol edin.

Ancak bu bazı olumsuz yanları var:

  • iyi dışındaki akışlarında publish_actions Kullanıcılardan değil emin olun onlar zaman çizelgesi ve izin hem verilmiş olması olduğundan emin olmak için sosyal eklentisi "Timeline Ekle".
  • Bunu yapmak için izin verdiğinden emin olmak için eylem yayınlamalısınız, çünkü bu etkinlikler başka kullanıcı eylemleri (parola değişikliği veya Facebook kullanıcı değiştirme, vb ... gibi) olabilir.
1

Nihayetinde (yakın bir gelecekte) herkesin profili Timeline'a aktarılacak, bu yüzden facebookun zaman çizelgesi etkin bir uygulamayı algılamak için güvenilir bir yol sağlamadığı anlaşılıyor.

1

Aşağıdaki olası çözüm, ek izin talebi gerektirmez. Gizli bir DIV içinde Facebook zaman çizelgesi eklenti kodunu eklerseniz, FB Canvas yüklenmesinden sonra (veya web sayfalarında xfbml) ve bu öğenin CSS yüksekliğini test edene kadar bekleyebilirsiniz. Kullanıcının Zaman Çizelgesi yoksa, 0px olacaktır. Aksi takdirde, 250px olacaktır (eklediğim gibi). Bu yalnızca (web sayfaları entegre değil Facebook) Facebook Apps içinde çalışır:

Facebook kullanıcı bu ekle 0.

için eleman tarzı yüksekliğini ayarlayarak zaman çizelgesi aktif olmadıysa bu eklenti elementi gizler senin Uygulama sayfa:

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

Ardından, javascript (Bilginize bu kullanım jQuery,) 'de:

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); 
    } 
); 

}; 

Web Entegrasyonu için aşağıdaki dolayı potansiyel ağ gecikme süresinden biraz daha az güvenilir olmakla kavram bazı uygulanabilir çözümü için değiştirilmiş olabilir: FB.Canvas.setDoneLoading yana

FB entegrasyonunu içeren bir web sitesinde çağrılmaz

, xfbml'ye abone olmak için yukarıdaki FB.Canvas.setDoneLoading işlevini değiştirin.eylemi işlemek ve bir zaman aşımını sınamak için:

window.fbAsyncInit = function() { FB.init ({...}); // FB.init kodunuzdan sonra

$(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); 
    } 
); 

}); 

};

Ben $ (document) .ready içine FB.Event.subscribe ('xfbml.render', hareketli (function() {...}) benim test buldum; yardımcı olur Uygulamanızın bir Facebook sayfasına gömüldüğü gecikme süresi (yükün yüklenmesi biraz daha uzun sürüyor) Sadece bunu test etmeye başladık, bu yüzden daha fazla test yapmaya devam edebilir veya tutmayabilir.

İlgili konular