如何从Facebook webforms应用程序获取app_data查询字符串? 我希望能够在查询字符串中发送一些信息,这样我就可以在我的应用程序上显示不同的主屏幕。 该应用程序位于页面标签中。
实施例: http://www.facebook.com/pages/APPNAME/157772164271503?sk=app_230501256972470&app_data=Page.aspx
如何从app_data获取“Page.aspx”? 我需要它将用户重定向到Default.aspx
的不同页面我找到了解决方案。 Get Querystring from facebook tab app using asp.net
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;
}
}
}
this post也很有帮助
只需要在facebook app settings ex中添加直接页面。 www.site.com/deafult.aspx不是www.site.com
答案 0 :(得分:3)
在Facebook发布的JSON数组中,其中一个顶级键是'app_data',如果已指定的话。所以你可以像'喜欢'那样去做,而不是'page.liked'它只是'app_data'(而不是布尔值)
答案 1 :(得分:-2)
facebook不会将查询字符串传递给您的页面。它会从不同的URL向您的页面发布帖子,因此您无法从页面加载中读取查询字符串。 我没试过这个,但是你可以尝试在页面的js中访问window.top.location.search。