我有一个iFrame FB应用程序(托管在mydomain.com上),使用以下内容显示朋友邀请对话:
<body>
<fb:serverFbml>
<script type="text/fbml">
<fb:fbml>
<fb:request-form action="http://mydomain.com/InviteSent.aspx" method="GET" invite="true" type="Game"
import_external_friends="true" style="background-color:#000"
content="Hey! Come join me, I'm online now! <fb:req-choice url="<%=gameUrl%>; label="Come and play!" />">
<fb:multi-friend-selector max="30" cols="3" rows="4" showborder="true" condensed="false" actiontext="Invite your friends to come and play!" />
</fb:request-form>
</fb:fbml>
</script>
</fb:serverFbml>
</body>
在成功邀请朋友之后调用的回调/操作页面肯定被称为好,但我的问题在于检索受邀者的Facebook ID。 FB文档说它们应该以形式发布到'ids'中,所以我的代码背后有这个(C#ASP.net):
if( Request["ids"] != null )
((Site)Master).FbInviteSent(Request.QueryString.GetValues("ids"));
我还在人们添加应用时设置了授权权限,因此我不认为该问题与此有任何关系。
提前干杯以获得任何帮助。
答案 0 :(得分:1)
所以从上面的代码中,我猜你正在使用iFrame而不是FBML。如果您的邀请页面后面的下一页是“apps.facebook.com/something”页面,则用户会在登陆目标页面之前被重定向到第三页。因此,当用户到达目标页面时,所有后置变量都将丢失。
解决这个问题的简单方法是将用户重定向到Facebook以外的地方,与受邀朋友一起做任何事情,完成后,将用户重定向回Facebook页面。
我希望有所帮助。 -Roozbeh
答案 1 :(得分:0)
不知道这是多么相关,但Roozbeh15是正确的。我通过PHP使用多朋友选择器。动作='URL'必须在facebook应用程序之外,因此请确保标签中不存在target =“_ top”。
希望这可以帮助其他人检索受邀者的ID。
答案 2 :(得分:0)
我发现了问题,它与在C#中检索ids []值有关。我从未见过将字符串数组作为HTTP POST / GET参数传递。以下是更正后的代码:
if( Request["ids"] != null )
((Site)Master).FbInviteSent(Request.QueryString["ids[]"].ToString().Split(','));
Roozbeh,你说;
实际上你不需要猜测,我在第一篇文章中明确表示过。无论如何,感谢和希望帮助他人。我猜你正在使用iFrame 而不是FBML