我有一个iframe Facebook应用程序(使用Facebook的新JavaScript API),需要允许用户在参加比赛后邀请他们的朋友加入应用程序。我在页面上的div中有以下标记(应用程序名称和Canvas Url编辑):
<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 :(得分: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,只需要JS代码中的APP ID。
2)XFBML需要包装在SCRIPT标签内。
答案 1 :(得分:1)
此示例也有效:
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=APP_ID&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>
在http://connect.facebook.net/en_US/all.js#appId= [APP_ID]&amp; xfbml = 1
中设置APP_ID