【问题标题】:Facebook Fan Page "Like" Stays on Fangate page instead of moving to WallFacebook 粉丝专页“点赞”停留在 Fangate 页面而不是移至 Wall
【发布时间】:2012-01-03 09:33:56
【问题描述】:

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

当前行为:用户停留在 fangate 页面(自定义标签,设置为我的粉丝页面的默认登录页面)。

据我从another question here 得知,如果有人使用页面顶部的按钮,我无法控制在有人“喜欢”我的页面后触发的事件。

但是,我访问过一些确实有我想要的行为的粉丝页面。我只是想不通他们是怎么做到的。示例:StrongMail's Facebook Fan Page

编辑:添加信息 - 我们为 Fangate 使用 iframe(如果相关)

【问题讨论】:

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


    【解决方案1】:

    编辑:如果您想显示某些内容而不是上墙,请在隐藏内容的顶部创建一个绝对定位的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
            }
        }
    

    这里的解码payload函数:

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

    【讨论】:

    • 这会将用户重定向到另一个选项卡?或者它只是重定向 iframe 内容?抱歉,我不懂 C# ASP 的东西,所以在我开始研究一门新语言之前,我想确保这是答案:-P
    • 您必须使用要移动到的标签的完整 URL,手动导航到它时从浏览器中抓取它。
    猜你喜欢
    • 2015-04-02
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多