2010-08-28 69 views
0

我有一個iframe Facebook應用程序(使用Facebook的新JavaScript API),需要允許用戶在進入比賽後邀請他們的朋友加入應用程序。我有一個div下面的標記在頁面(應用程序名稱和帆布網址節錄):Facebook多朋友選擇器不渲染(iFrame應用程序)

<fb:serverFbml> 
    <fb:request-form 
     method="POST" 
     invite="true" 
     type="{Name of My Application}" 
     content='Your text goes here. %3Cfb%3Areq-choice%20url%3D%{a url-encoded link to my Canvas URL}"/>' 
     label="Authorize My Application"> 
     <fb:multi-friend-selector showborder="false" actiontext="Invite your friends to use My Application."> 
     </fb:multi-friend-selector> 
    </fb:request-form> 
</fb:serverFbml> 

從我的理解,如果你需要在XFBML/iframe應用程序使用FBML標籤,你只是把它們到一個fb:serverFbml元素和Facebook照顧它。果然,我的第一印象似乎是錯誤的。我不是在表格中放下,而是隻是看到一個空白的盒子,看起來沒有碰到fbml。

此應用程序的設計假設(可能不正確),我不需要驗證用戶,讓他們邀請他們的朋友。有沒有辦法做到這一點,還是我需要先要求他們登錄? Facebook的文檔(當然)在這方面很模糊。

編輯:我FB.init()的要求:

$("body").prepend("<div id=\"fb-root\"></div>"); 
FB.init({ 
    apiKey: "{My apiKey is here}", 
    appId: "{My appId is here}", 
    status: true, 
    cookie: true, 
    xfbml: true 
}); 
+0

你能不能也顯示你的js api init方法? – serg 2010-08-28 21:22:00

+0

將我的FB.init()添加到您的問題中。 – Dusda 2010-08-28 21:25:06

+0

邀請形式是在初始加載後動態添加到頁面還是從一開始就在那裏? – serg 2010-08-28 21:38:12

回答

2

好吧,我得到它的工作。這裏是如何找我:

<fb:serverfbml> 
    <script type="text/fbml"> 
     <fb:fbml> 
      <fb:request-form action='my_url' method='POST' 
      invite='true' 
      type='Poll' 
      content='This is an invitation! <fb:req-choice url="my_url" label="Accept and join" /> '> 
      <fb:multi-friend-selector showborder='false' actiontext='Select friends to send the poll' cols='5' rows='3' bypass='cancel' max="8"> 
      </fb:request-form> 
     </fb:fbml> 
    </script> 
</fb:serverfbml> 

和JS注入代碼如下所示:

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'YOUR APP ID HERE', 
     status: true, 
     cookie: true, 
     xfbml: true 
    }); 
    }; 
    (function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

所以,

1)你不需要你的APP KEY,只有你的APP ID在JS代碼中。

2)XFBML需要封裝在一個SCRIPT標籤內。

1

這個例子也工作:

<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=APP_ID&amp;xfbml=1"></script><fb:serverfbml> 
    <script type="text/fbml"> 
    <fb:fbml> 
     <fb:request-form action='my_url' method='POST' 
     invite='true' 
     type='Poll' 
     content='This is an invitation! <fb:req-choice url="my_url" label="Accept and join" /> '> 
     <fb:multi-friend-selector showborder='false' actiontext='Select friends to  send the poll' cols='5' rows='3' bypass='cancel' max="8"> 
      </fb:request-form> 
     </fb:fbml> 
    </script> 
</fb:serverfbml> 

集APP_ID在http://connect.facebook.net/en_US/all.js#appId=[APP_ID] & XFBML = 1

相關問題