Facebook粉丝页面“喜欢”在Fangate页面上停留而不是转向Wall

时间:2011-11-21 22:24:45

标签: facebook facebook-like facebook-page facebook-wall

所需行为:使用粉丝页面顶部的“赞”按钮后,我希望将用户发送到墙上。

当前行为:用户仍在fangate页面上(自定义标签设置为我的粉丝页面的默认目标网页)。

another question here我所知道的,我无法控制在某人"喜欢"之后触发的事件。我的页面,如果他们使用页面顶部的按钮。

然而,我去过一些粉丝页面,这些粉丝页面都有我想要的行为。我无法弄清楚他们是如何做到的。示例:StrongMail's Facebook Fan Page

编辑:添加信息 - 我们使用iframe作为方面(如果相关的话)

1 个答案:

答案 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;
}