Facebook webforms app获取app_data查询字符串

Bob*_*ski 6 app-data facebook-c#-sdk

如何从Facebook webforms应用程序获取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选项卡应用程序获取Querystring

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;
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

另外这个帖子是有帮助

只需要在Facebook应用程序设置中添加直接页面.www.site.com/deafult.aspx不是www.site.com

小智 3

在 facebook 发布的 JSON 数组中,顶级键之一是“app_data”(如果已指定)。所以你可以像你对​​“喜欢”所做的那样,但不是“page.liked”,它只是“app_data”(而不是布尔值)