所需行为:使用粉丝页面顶部的“赞”按钮后,我希望将用户发送到墙上。
当前行为:用户仍在fangate页面上(自定义标签设置为我的粉丝页面的默认目标网页)。
从another question here我所知道的,我无法控制在某人"喜欢"之后触发的事件。我的页面,如果他们使用页面顶部的按钮。
然而,我去过一些粉丝页面,这些粉丝页面都有我想要的行为。我无法弄清楚他们是如何做到的。示例:StrongMail's Facebook Fan Page
编辑:添加信息 - 我们使用iframe作为方面(如果相关的话)
答案 0 :(得分:2)
编辑:如果您想要显示某些内容而不是转到墙上,请在隐藏内容之上设置一个绝对定位div
,并在喜欢它时隐藏div
。
如果您使用的是C#ASP.Net,我从未遇到过使用此技术的问题。您可以检查signed_request
并使用JObject
解码,然后根据需要重定向。
检查出来:How to decode OAuth 2.0 for Canvas signed_request in C#?
您需要从此处下载并引用JSON.Net:Json.NET
在页面加载:
if (Request.Form["signed_request"] != null)
{
var result = (IDictionary)DecodePayload(Request.Form["signed_request"].Split('.')[1]);
JObject liked = JObject.Parse(result["page"].ToString());
if (liked["liked"].ToString().Trim().ToLower() == "true")
{
//do redirection here
}
}
此处的解码有效负载功能:
public Dictionary<string, string> DecodePayload(string payload)
{
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 jObject = JObject.Parse(json);
var parameters = new Dictionary<string, string>();
parameters.Add("user_id", (string)jObject["user_id"] ?? "");
parameters.Add("oauth_token", (string)jObject["oauth_token"] ?? "");
var expires = ((long?)jObject["expires"] ?? 0);
parameters.Add("expires", expires > 0 ? expires.ToString() : "");
parameters.Add("profile_id", (string)jObject["profile_id"] ?? "");
parameters.Add("page", jObject["page"].ToString() ?? "");
return parameters;
}