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

如何仅使用Javascript/jQuery将信息从查询字符串传递到Facebook中的页面选项卡应用程序,javascript,jquery,facebook,Javascript,Jquery,Facebook,我正在尝试将一条信息(使用查询字符串)传递到我的Facebook页面选项卡应用程序 例如,如果用户单击此URL: - 我希望能够访问应用程序中的“mydata” 根据我所做的阅读,Facebook不允许GET请求,但可以使用app\u data和signed\u请求来实现这一点 但是,我还没有找到任何关于如何使用javascript SDK(这可能吗?)和.NET(理想情况下,我只需要javascript就可以实现这一点)进行设置的信息。我不知道如何使用signed_请求设置和读取数据,关于si

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

例如,如果用户单击此URL:

-

我希望能够访问应用程序中的“mydata”

根据我所做的阅读,Facebook不允许
GET
请求,但可以使用
app\u data
signed\u请求来实现这一点

但是,我还没有找到任何关于如何使用javascript SDK(这可能吗?)和.NET(理想情况下,我只需要javascript就可以实现这一点)进行设置的信息。我不知道如何使用signed_请求设置和读取数据,关于signed_请求的文档更让我困惑,而不是帮助我。我真的很想简单的说明如何实现这个功能

编辑:

我想我已经差不多明白了。如果其他人正在寻找这个问题的答案,我会把我迄今为止所做的事情放在下面。此外,如果你看到任何改进的余地,请告诉我。我并不认为这是完美的,但它是有效的

首先,url必须是页面选项卡url,而不是应用程序的直接url(如我上面发布的): -

下面是为我工作的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 + '"')
在JSFIDLE上:

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

如果它运行良好,我将在这里更新它。或者如果有人知道更好的方法,请告诉我

理想情况下,我能够用JavaScript实现这一点

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


上的文档有关于如何在服务器端解析/解码的说明;这个例子是用PHP编写的,但是将基本算法(如果可以这样称呼的话)传输到.NET环境应该很容易。

您的思路是正确的。我的建议是多做研究。这里有很多关于这方面的代码示例…谢谢。只是想澄清一下:这是一个POST请求,但facebook将其发布到一个隐藏的输入字段,以便javascript能够访问它。什么隐藏字段?对不起,我不明白你的意思,没关系。Facebook使用post请求中的信息,并将其放入页面选项卡应用程序上加密的隐藏输入字段中。它看起来像这样: