2016-01-24 105 views
0

我正在做一個Facebook應用程序的畫布(遊戲),我想我的隊員使用帶有URL參數鏈接到不同的區域在遊戲環節,即訪問Facebook畫布URL參數

https://apps.facebook.com/mgatlandtestapp?level=emeraldhillzone

如何訪問水平= emeraldhillzone信息在我的應用程序(無論是客戶端的JavaScript中的iFrame或服務器端的Node.js應用程式)


事情我已經試過了遠:

  1. 4-year-old answer說,它有可能在客戶端的代碼,但並沒有說如何(對不起,如果我失去了一些東西明顯! window.location的給我的Heroku的服務器,而不是Facebook的URL的位置)

  2. 一些facebook documentation的讓我覺得這會工作:

使用形式https://apps.facebook.com/mgatlandtestapp?app_data=yourDataHere然後一個url 在服務器端獲得發送到服務器的簽名請求,它將包含一個app_data字段。

但是,當我這樣做時,簽名的請求不包含app_data字段。

閱讀更多內容後,我認爲app_data只適用於應用程序正在Facebook頁面選項卡中加載,而不是Facebook畫布頁面。

回答

0

Facebook向您的應用發送初始POST,其中包含url參數。您可以從該POST請求中訪問url參數。

我用這個URL加載頁面:

https://apps.facebook.com/mgatlandtest/?level=emeraldhillzone

我用這個代碼在我的node.js服務器的應用程序服務請求

app.post('/*', function(request, response) { 
    console.log('url parameters:'); 
    console.log(request.query); 
    response.redirect('/'); 
}); 

在節點控制檯輸出是:

url參數:
{級別:'emeraldhillzone'}

然後,您可以使用參數重定向到不同的頁面。


這實際上很簡單,一旦我過去了所有分散注意力的錯誤信息。關鍵是搜索「深層鏈接」(而不是'網址參數'),這會帶來this answer