从我的应用程序访问Facebook画布URL参数

时间:2016-01-24 11:23:35

标签: javascript facebook-canvas

我正在制作一个Facebook画布应用程序(游戏),我希望我的玩家使用链接到游戏中不同区域的url参数链接,即

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

如何在我的应用中访问 level = emeraldhillzone 信息(客户端使用iFrame中的javascript,或服务器端作为node.js应用程序)

到目前为止我尝试过的事情:

  1. 4-year-old answer表示可以在客户端代码中进行操作,但不能说明如何(抱歉,如果我错过了一些明显的东西!window.location我的heroku服务器的位置,而不是facebook网址。)

  2. 部分facebook documentation让我觉得这样可行:

  3.   

    使用https://apps.facebook.com/mgatlandtestapp?app_data=yourDataHere形式的网址,然后在服务器端使用 将已签名的请求发送到服务器,它将包含app_data字段。

    但是,当我这样做时,签名的请求不包含app_data字段。

    在阅读更多内容后,我认为只有在Facebook页面标签中加载应用程序而不是facebook Canvas页面时,app_data才有效。

1 个答案:

答案 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