2011-11-21 83 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