2011-01-10 137 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。