6

Facebook Web フォーム アプリから app_data クエリ文字列を取得するにはどうすればよいですか? アプリに別のホーム画面を表示できるように、クエリ文字列で情報を送信できるようにしたいと考えています。アプリはページタブに座っています。

例: http://www.facebook.com/pages/APPNAME/157772164271503?sk=app_230501256972470&app_data=Page.aspx

app_data から "Page.aspx" を取得するにはどうすればよいですか? ユーザーを Default.aspx とは別のページにリダイレクトする必要があります

解決策を見つけました。 asp.netを使用してFacebookタブアプリからクエリ文字列を取得します

using Newtonsoft.Json.Linq;
using System.Text;

public partial class Page_Default : System.Web.UI.Page
{
    protected string output = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        output = "Whole thing:" +Request.Form["signed_request"];
        output += "Second part:" + Request.Form["signed_request"].Split('.')[1];

            try
            {
                string payload = Request.Form["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);

                output += "Decoded:" + json;

                bool liked = (bool)o.SelectToken("page.liked");

                output += "Liked:" + liked.ToString();
            }
            catch (Exception ex)
            {
                output += "Extract failed: " + ex.Message;
            }
    }
}

また、この投稿は役に立ちました

Facebookアプリの設定例でダイレクトページを追加してください。www.site.com/deafult.aspx www.site.com ではない

4

2 に答える 2

3

Facebook が投稿する JSON 配列では、指定されている場合、最上位のキーの 1 つが「app_data」です。したがって、「liked」の場合と同じようにできますが、「page.liked」の代わりに「app_data」になります(ブール値ではありません)。

于 2011-09-27T16:02:35.683 に答える
-2

facebook はクエリ文字列をページに渡しません。別の URL からページに投稿するため、ページの読み込みからクエリ文字列を読み取ることはできません。私はこれを試したことはありませんが、ページの js で window.top.location.search にアクセスしてみてください。

于 2011-07-08T14:16:58.470 に答える