2012-07-30 65 views
0

我想單件的信息(使用查詢字符串)傳遞給我的Facebook頁面標籤的應用程序信息傳遞到頁面標籤的應用程序在Facebook中。如何從查詢字符串只用使用Javascript/jQuery的

例如,如果在這個網址的用戶點擊:

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

我希望能在該應用訪問「MYDATA」。

從我讀過的書中,Facebook不允許GET請求,但可以使用app_datasigned_request這樣做。但是,我還沒有找到任何有關如何使用JavaScript SDK(甚至有可能?)和.NET(理想情況下,我可以用JavaScript實現這個)的信息。我不知道如何使用signed_request設置和讀取數據,並且有關signed_requests的文檔讓我感到困惑的不僅僅是幫助。我真的很喜歡關於如何實現這個功能的簡單說明。

編輯:

我想我已經差點想通了。如果其他人正在尋找這個答案,我把我在下面做了什麼。另外,如果你看到有任何改進的餘地,請告訴我。我不認爲這是完美的任何手段,但它的作品。

首先,URL需要在頁面選項卡上的網址,而不是直接鏈接到應用程序(如我上面貼): - 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解碼器的JavaScript取代ATOB。我在考慮使用這一個:

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

如果它工作得很好,我會在這裏更新。或者如果有人知道更好的方法,請告訴我。

+0

你在正確的軌道上。我的建議是做更多的研究。這裏有很多代碼示例... – 2012-07-30 22:57:51

回答

0

理想情況下,我將能夠與落實這只是JavaScript的

這是不可能的,因爲你已經發現了signed_request參數被髮布到您的網頁,和JavaScript有POST進不去參數本身。

signed_request parameter的文檔對如何解析/解碼它的服務器端的指令;這個例子是用PHP編寫的,但應該很容易將基本算法(如果可以稱之爲)傳輸到.NET環境中。

+0

謝謝。只是爲了澄清:這是一個POST請求,但Facebook將其發佈到隱藏的輸入字段,以便JavaScript可以訪問它。 – isognomon 2012-07-31 18:57:58

+0

什麼隱藏領域?對不起,我沒有看到你的意思。 – CBroe 2012-08-01 08:09:12

+0

沒關係。Facebook使用發佈請求中的信息並將其放入頁面標籤應用中的加密隱藏輸入字段。它看起來是這樣的:'' – isognomon 2012-08-01 13:57:19