2011-01-10 140 views
1

我有一个iFrame的FB的应用程序列表(托管在说mydomain.com),这说明朋友使用下面的邀请对话:Facebook应用程序邀请,让邀请朋友

<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! &lt;fb:req-choice url=&quot;<%=gameUrl%>; label=&quot;Come and play!&quot; /&gt;"> 
       <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

我发现这个问题,它涉及到检索C#中的ids []值。我从来没有见过一个字符串数组作为HTTP POST/GET参数传递。以下是更正的代码:

if(Request["ids"] != null) 
    ((Site)Master).FbInviteSent(Request.QueryString["ids[]"].ToString().Split(',')); 

Roozbeh,你说;

我猜你使用内置页框 而不是FBML

..in其实你没必要去猜测,我清楚地说,在我的第一篇文章。无论如何感谢和希望,帮助别人。

1

所以从上面的代码中,我猜你正在使用iFrame而不是FBML。如果您的邀请页面之后的下一页是“apps.facebook.com/something”页面,用户会在登录到目标页面之前被重定向到第三页,会发生什么情况。因此,当用户到达目标页面时,所有的post变量都会丢失。

解决这个问题的简单方法是将用户重定向到Facebook以外的地方,在受邀朋友做任何你想做的事情之后,一旦完成,将用户重定向到Facebook页面。

我希望有帮助。 -Roozbeh

+0

谢谢,但我重定向到相同的域(我稍微更新了代码来表明这一点)。 – Daniel 2011-01-12 04:07:34

0

不知道这有多相关,但Roozbeh15是正确的。我通过PHP使用多朋友选择器。它的迫切性是,action ='URL'不在facebook应用程序中,因此确保target =“_ top”不在标签内。

希望这可以帮助其他人检索被邀请者的ID。