2011-10-27 110 views
2

在我目前的.NET和基於FBML,Facebook的應用程序,我有一些代碼,看起來像這樣:如何發送鏈接到外部網站的Facebook請求?

<fb:request-form 
     action="http://mysite.com/InvitesSent.aspx" 
     method="POST" 
     invite="true" 
     type="SomeType" 
     content="Here is an invite to <fb:req-choice url='http://mysite.com?<%=Params %>' label='My site' />"> 
    <fb:multi-friend-selector 
      max="20" 
      actiontext="Invite your friends!" 
      showborder="false" 
      rows="4" 
      bypass="cancel" 
      email_invite="false" 
      exclude_ids="" /> 
</fb:request-form> 

這個彈出我的網站多的朋友選擇從用戶選擇的一些朋友和印刷機'發送邀請',此時用戶被重定向到http://mysite.com/InvitesSent.aspx

另一方面,邀請的收件人使用「接受」按鈕查看通知。當按下該按鈕,Facebook的立即重定向到我的網站

http://www.facebook.com/l.php?u=http%3A%2F%2Fmysite.com%3F ... 

這是Facebook的外部鏈接重定向的事情。此重定向包含我在fb:req-choice url屬性中提供的參數。

我的問題是這樣的:由於FBML將停止使用,我如何在Javascript SDK中實現這種行爲?

我可以使用FB.ui和apprequest發送通知,但我似乎無法像在FBML中那樣在URL上添加參數。我需要這個,因爲我希望獎勵邀請者,並且我需要能夠跟蹤個人請求。

在新SDK中甚至有這種可能嗎?文檔很混亂,有時會區分請求和邀請,有時候不會。說實話,我並不確定是否存在差異,我只是緊緊抓住FBML中的線索,例如'invite =「true」',這可能會幫助我找到一個解決方案。

回答

3

這是不可能的了,這從developer documentation

用戶響應

的請求

如果用戶點擊「接受」下面的段落是顯而易見的,它們將被髮送到畫布發送請求的應用程序的URL。此URL將包含一個附加參數request_ids,它是用戶試圖採取行動的請求ID的逗號分隔列表:

http://apps.facebook.com/ [app_name] /?request_ids = [ request_ids] 作爲用戶登錄應用程序的最佳做法,您應該閱讀出色的應用程序請求。如果用戶點擊儀表板上的通知或請求,您將通過URL傳遞請求ID。然後,當用戶處理請求時,您應該通過Graph API將其刪除。

當用戶點擊Facebook的API接受時,請求2.0請求不會被刪除。您必須使用Graph API讀取並清除它們。

那麼,你可以嘗試是這樣的:

  1. 當用戶發送邀請/請求她的朋友

    ,閱讀在JavaScript回調request_ids,並將它們存儲到您的分貝阿賈克斯(所以你可以撥打InvitesSent.aspx)。

  2. 當新用戶來讀取request_id並獎勵發送請求的用戶。

如果你能告訴我,當用戶從外部網站發送請求,另一個用戶接受,隨着新的JS SDK會發生什麼,我可以更具體與解決方案。基本上,如果你關注瀏覽器的網址,你就會知道Facebook如何重定向接受的新用戶。在文檔接受僅提及畫布應用程序,所以我不知道外部網站會發生什麼情況。如果你測試它,我們可以弄明白。
編輯:
正如Igy建議,我認爲接受請求將始終重定向到畫布。

+1

只處理您的畫布網址上的請求,然後將用戶發送回Facebook的主應用程序;我強烈建議不要默默/自動執行,因爲它會導致糟糕的用戶體驗。接受請求的期望是它會帶你到facebook.com上的某個地方,因此在大多數情況下自動轉發到別處是意想不到的。如果您根本不想擁有畫布應用程序,請求可能不是使用 – Igy

+1

@Igy的好渠道,因此如果沒有畫布應用程序並且只有一個網站,是否可以跟蹤Feed帖子,就像用戶訪問Feed帖子中的鏈接時一樣,post_id是否附加到url? –

+0

爲了記錄,我沒有畫布應用程序。 – izb