我正在制作一个Facebook画布应用程序(游戏),我希望我的玩家使用链接到游戏中不同区域的url参数链接,即
https://apps.facebook.com/mgatlandtestapp?level=emeraldhillzone
如何在我的应用中访问 level = emeraldhillzone 信息(客户端使用iFrame中的javascript,或服务器端作为node.js应用程序)
到目前为止我尝试过的事情:
此4-year-old answer表示可以在客户端代码中进行操作,但不能说明如何(抱歉,如果我错过了一些明显的东西!window.location我的heroku服务器的位置,而不是facebook网址。)
部分facebook documentation让我觉得这样可行:
使用https://apps.facebook.com/mgatlandtestapp?app_data=yourDataHere形式的网址,然后在服务器端使用 将已签名的请求发送到服务器,它将包含app_data字段。
但是,当我这样做时,签名的请求不包含app_data字段。
在阅读更多内容后,我认为只有在Facebook页面标签中加载应用程序而不是facebook Canvas页面时,app_data才有效。
答案 0 :(得分:0)
Facebook向您的应用发送初始POST,其中包含url参数。您可以从该POST请求中访问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参数:
{level:' emeraldhillzone' }
然后,您可以使用参数重定向到其他页面。
这实际上非常简单,一旦我克服了所有令人分心的错误信息。关键是寻找深层链接' (而不是' url参数'),这会带来this answer