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