0

Facebook ページ タブ アプリケーションに (クエリ文字列を使用して) 1 つの情報を渡そうとしています。

たとえば、ユーザーが次の URL をクリックした場合:

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

アプリで「mydata」にアクセスできるようにしたいと思います。

私が行った読書から、Facebook はGETリクエストを許可していませんが、 と を使用してこれを行うことは可能app_dataですsigned_request

ただし、javascript SDK を使用してこれを設定する方法に関する情報を見つけることができませんでした (それは可能ですか?) および .NET (理想的には、JavaScript だけでこれを実装できます)。signed_request を使用してデータを設定および読み取る方法がわかりません。signed_requests に関するドキュメントは、助けになるどころか、私を混乱させます。この機能を実装する方法についての簡単な説明が本当に欲しいです。

編集:

ほぼ分かったと思います。他の誰かがこれに対する答えを探している場合に備えて、これまでに行ったことを以下に示します。また、改善の余地があれば教えてください。これが決して完璧だとは言いませんが、うまくいきます。

まず、URL は、アプリへの直接の URL ではなく、ページ タブの URL である必要があります (上記の投稿のように): - http://www.facebook.com/pages/PageName/########? sk=app_#########&app_data=マイデータ

これが私のために働いている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/

まだやらなければならないことの 1 つは、atob を javascript の base64url デコーダーに置き換えることです。私はこれを使用することを考えています:

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

うまくいったら、ここで更新します。または、より効果的な方法を知っている方がいましたら教えてください。

4

1 に答える 1

0

理想的には、これを JavaScript だけで実装できると思います

signed_request パラメーターがページに POST されており、JavaScript は POST パラメーター自体にアクセスできないことがわかっているため、これは不可能です。

signed_request パラメータのドキュメントには、サーバー側で解析/デコードする方法が記載されています。この例は PHP で書かれていますが、基本的なアルゴリズム (それを呼び出すことができれば) を .NET 環境に簡単に転送できるはずです。

于 2012-07-31T07:25:47.920 に答える