あなたは、このトピックのコードを使用して署名要求をデコードすることができます Decode Signed Request Without Authentication
if (Request.Params["signed_request"] != null)
{
string payload = Request.Params["signed_request"].Split('.')[1];
var encoding = new UTF8Encoding();
var decodedJson = payload.Replace("=", string.Empty).Replace('-', '+').Replace('_', '/');
var base64JsonArray = Convert.FromBase64String(decodedJson.PadRight(decodedJson.Length + (4 - decodedJson.Length % 4) % 4, '='));
var json = encoding.GetString(base64JsonArray);
var o = JObject.Parse(json);
var lPid = Convert.ToString(o.SelectToken("page.id")).Replace("\"", "");
var lLiked = Convert.ToString(o.SelectToken("page.liked")).Replace("\"", "");
var lUserId= Convert.ToString(o.SelectToken("user_id")).Replace("\"", "");
}
あなたのためにApp_Dataにしていると
var lAppData = Convert.ToString(o.SelectToken("app_data")).Replace("\"", "");
を追加することにより、App_Dataにを取得するために簡単なはずタブのアプリでは、アクセス権を取得するときにリダイレクトURLに追加する必要があります。
http://facebook.com/YOUR_PAGE?sk=app_YOUR_APP_ID&app_data=add,whatever,parameters,you,want,here
私はあなただけではなく、エコーのツールで使用されるもののアドレスバーに自分の署名要求を貼り付けたので、あなたは、このエラーを得た理由があると推測することができますのようなものがすべきは、URLをリダイレクトします。このエラーは、署名されたリクエストがapp_idによって署名されていて、別のapp_idを持つechoでそれを使用しようとしているためです。しかし、それはただの推測:)
私の主な言語はPHPであるのですが、私はOの値が{ 「アルゴリズム」である:)
助けることができました願っています:「HMAC-SHA256」、 は「期限が切れる」とは: 1331035200、 "issued_at":1331029487、 "oauth_token": "XXXXX"、 "ページ":{ "ID": "XXXXX"、 は "気に入った":偽、 "admin" を:真 }、 "user":{ "国": "gb"、 "ロケール": "en_US"、 "年齢":{ "min":21 012あなたはまだ見ることができますが、app_data –
はまだリダイレクトURLにapp_dataを追加していないことがわかりますか?アプリデータの全体のアイデアは、これらのリダイレクトでそれを持つことです。可能であれば、ログインURLを作成するコードを入力してください。 –
私が理解しているように、app_dataは符号付きリクエストにエンコードされています。署名されたリクエストは、FB.getLoginStatus(function(response){ if(response.authResponse){ //ログインして接続しているユーザ、あなたが知っている誰か)を使用して取得されました window.location.href = "/?signed_request =" + window .response.authResponse。signedRequest; } else { //利用可能なユーザーセッションがありません。あなたが知りません。 } }); ホームコントローラが要求を処理します。 –