2009-05-04 6 views

Trả lời

16

Có, điều này là hoàn toàn có thể, nhưng bạn phải sử dụng Facebook ConnectXFBML. Cụ thể, bạn muốn sử dụng thẻ fb:serverfbml để nhận fb: chọn người bạn làm việc. Tôi có một ứng dụng iframe, theo đó tôi sử dụng tất cả điều này và fb: friend-selector trong ngữ cảnh "mời bạn bè vào ứng dụng của bạn" chuẩn và nó hoạt động tuyệt vời.

Đây là cơ thể của tập tin mẫu của tôi, mà được đầu ra bên trong cơ thể của iframe tôi:

<fb:serverfbml style="width: 650px;"> 
<script type="text/fbml"> 
    <fb:fbml> 
     <fb:request-form 
      action="http://example.com/invite/sent" 
      method="POST" 
      invite="true" 
      type="My App" 
      content="Try out my app! 
       <fb:req-choice url='http://your-facebook-canvas-url' 
       label='<?php echo htmlspecialchars("Accept button text",ENT_QUOTES); ?>' 
       /> 
      " > 
      <fb:multi-friend-selector 
       showborder="false" 
       actiontext="Invite your friends to try My App." 
       exclude_ids="<?php echo $excludeIds; ?>" 
       rows="3" 
      /> 
     </fb:request-form> 
    </fb:fbml> 
</script> 
</fb:serverfbml> 

Trong footer của trang, tôi có mã Facebook Connect tiêu chuẩn, mà sẽ được tải và hiển thị nội dung fb: serverfbml:

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script> 
<script type="text/javascript"> 
    FB_RequireFeatures(
     ["CanvasUtil"], 
     function(){ 
      FB.XdComm.Server.init('/xd_receiver.html'); 
      FB.CanvasClient.startTimerToSizeToContent(); 
     } 
    ); 
</script> 

<script type="text/javascript"> 
    FB_RequireFeatures(["XFBML"], function(){ FB.Facebook.init("Your Facebook API Key", "/xd_receiver.html"); }); 
</script> 

Đó là tất cả những gì bạn cần (điền vào tùy chọn của bạn nếu có). Bạn sẽ phải thiết lập Facebook Connect để làm việc với một tệp người nhận miền chéo. Tôi đề nghị theo dõi rendering XFBML steps.

+0

Bạn nói rằng bạn phải sử dụng Facebook Connect. Từ tài liệu có vẻ như có hai liên kết đến FeatureLoader.js với Connect và một liên kết không có Connect trong url. Tôi không biết phải làm gì và rất bối rối. – f4hy

+2

Trong khi câu trả lời được đề xuất bởi Zombat hoạt động, bạn nên sử dụng [JS SDK] mới (http://developers.facebook.com/docs/reference/javascript/) thay vì JS SDK cũ hơn mà mẫu mã của mình sử dụng. XFBML sẽ vẫn giữ nguyên, nhưng mã JS sẽ trông khác. Dưới đây là ví dụ trực tiếp: http://apps.facebook.com/fbrelll/xfbml/fb:server-fbml-multi-friend-selector. – daaku

+0

@daaku - vâng, câu hỏi này đã được hỏi/trả lời hơn một năm trước, do đó, nó đã lỗi thời. – zombat

3

Vì đó là rất nhiều câu hỏi về bộ chọn bạn bè trong iframe.

Guys các sintax đúng tại là <fb:serverfbml width="650px">

9

Câu hỏi trong chủ đề này vẫn còn có liên quan nhưng câu trả lời là hết hiệu lực. Bạn nên sử dụng SDK javascript mới. Điều này sẽ thay thế đoạn thứ hai mã đăng bởi zombat

<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
    FB.init({appId: 'your app id', 
     status: true, 
     cookie: true, 
     xfbml: true}); 
    FB.Event.subscribe('auth.sessionChange', function(response) { 
    if (response.session) { 
     // A user has logged in, and a new cookie has been saved 
    } else { 
     // The user has logged out 
    } 
    }); 
</script> 

biết thêm ở đây: http://www.clickonchris.com/2010/11/facebook-javascript-sdks/

0

một MAJOR và điểm quan trọng là bị bỏ lỡ là nhiều bạn (trong đó có tôi) dính vào trong kịch bản chỉ là về bất cứ nơi nào. .. nhưng tệp tải "FB" tải.js cần được tải IMMEDIATELY sau thẻ body.

ít nhất đây là những gì tôi thấy để làm cho mọi thứ hoạt động và phù hợp với humm. Tôi tìm thấy nó trên một bài viết trên một số trang web khác (không chắc chắn nếu tôi nên đăng nó ở đây hay không ...) nhưng nó đến sau khi chi tiêu vô số giờ, làm như đã nói ở trên - cũng như sau mỗi 1,2 khác, 3 bước đột nhập vào khung nội tuyến để kích thước chính xác ...

và bây giờ tôi đã nhận được nó để làm việc :)