2011-11-21 43 views
1

所需行为:在我的粉丝页面顶部使用Like按钮后,我希望将用户发送到Wall。Facebook粉丝页面“Like”留在Fangate页面上,而不是移动到墙上

当前行为:用户保持在fangate页面(自定义选项卡设置为我粉丝页面的默认登录页面)。

从我所知道的another question here中,我无法控制在用户“喜欢”我的页面后触发的事件,如果他们使用页面顶部的按钮。

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

编辑:添加信息 - 我们使用的Fangate的iframe(在与自己相关的情况下)

回答

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

这会将用户重定向到另一个选项卡?或者它只是重定向iframe内容?对不起,我不懂C#ASP的东西,所以我想确保这是我开始挖掘新语言之前的答案:-P – cfrydlewicz

+0

您必须使用您希望移到的选项卡的完整URL ,只需手动导航到浏览器即可从浏览器中抓取它。 – AdmanStrong