6

如何从 Facebook 网络表单应用程序获取 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 数组中,顶级键之一是“app_data”(如果已指定)。因此,您可以像对“喜欢”一样使用它,但不是“page.liked”,而是“app_data”(而不是布尔值)

于 2011-09-27T16:02:35.683 回答
-2

facebook 不会将查询字符串传递给您的页面。它会从不同的 url 向您的页面发布帖子,因此您将无法从页面加载中读取查询字符串。这个我没试过,但是你可以尝试在页面的js中访问window.top.location.search。

于 2011-07-08T14:16:58.470 回答