如何使用Javascript / jQuery将信息从查询字符串传递到Facebook中的页面选项卡应用程序

时间:2012-07-30 20:21:23

标签: javascript jquery facebook

我正在尝试将一条信息(使用查询字符串)传递到我的Facebook页面标签应用程序。

例如,如果用户点击此网址:

- http://apps.facebook.com/myappname/?app_data=mydata

我希望能够在应用中访问“mydata”。

从我已经完成的阅读中,Facebook不允许GET个请求,但可以使用app_datasigned_request执行此操作。

但是,我还没有找到任何关于如何使用javascript SDK设置它的信息(甚至可能吗?)和.NET(理想情况下,我只能用JavaScript实现它)。我不知道如何使用signed_request设置和读取数据,而signed_requests周围的文档让我感到困惑,而不仅仅是帮助。我真的很喜欢关于如何实现这个功能的简单说明。

编辑:

我想我差点搞清楚了。如果其他人正在寻找答案,我把我到目前为止所做的工作放在下面。另外,如果您有任何改进空间,请告诉我们。我并不认为这是完美的,但它确实有效。

首先,网址必须是网页标签网址,而不是应用的直接网址(就像我上面发布的那样): - http://www.facebook.com/pages/PageName/########?sk=app_#########&app_data=mydata

以下是适用于我的javascript代码:

//get value of signed request and split it 
var signedRequest = $('#mainContent_hfSigned').val().split(".");

//decode json (this does not work on ie - needs to be replaced)
var decodedJson = window.atob(signedRequest[1]);

//parse json to gain access to parameters
var jsonParams = jQuery.parseJSON(decodedJson);

//append the app_data varible to ensure it's being read properly
$('.message').append('Your app_data param is "' + jsonParams.app_data + '"')

在jsfiddle上: http://jsfiddle.net/C3xsm/1/

我知道我还需要做的一件事就是使用base64url解码器替换atob for javascript。我正在考虑使用这个:

http://code.google.com/p/stringencoders/source/browse/trunk/javascript/base64.js

如果效果很好,我会在这里更新。或者如果有人知道更好的东西,请告诉我。

1 个答案:

答案 0 :(得分:0)

  

理想情况下,我可以用JavaScript实现这个

这是不可能的,因为您已经发现signed_request参数已发布到您的页面,而JavaScript本身无法访问POST参数。

signed_request parameter上的文档有关于如何解析/解码服务器端的说明;示例是在PHP中,但是将基本算法(如果可以称之为)转移到.NET环境应该很容易。