2011-08-04 73 views
2

我想在Kentico中設置頁面門。我應該着手使用Web部件還是模塊?我已經玩過這兩種遊戲,所以我們知道如何使用它們進行基本開發。kentico中的facebook頁面門

回答

1

我以前用頁面模板做過。其實很簡單。 Facebook有一個參數'signed_request',它是base64編碼的,它發回(如果你在Facebook上有一個應用程序設置)。你需要解碼它並使用json查找'喜歡'變量,這應該是true或false。

我有一個2 CMSEditableRegion的頁面上,一個如果用戶喜歡的頁面,一個如果用戶還沒有(還;)喜歡的頁面。

 protected CMSEditableRegion likedRegion; 
     protected CMSEditableRegion notLikedRegion; 

     protected bool ValidateSignedRequest(string signed_request) 
     { 

      try 
      { 
       string payload = signed_request.Split('.')[1]; 
       UTF8Encoding 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); 

       return json.IndexOf("\"liked\":true") != -1; 

      } 
      catch (Exception ex) 
      { 
       return false; 
      } 
     } 

     private bool parsePageSignedRequest() 
     { 
      if (Request["signed_request"] != null) 
      { 
       return ValidateSignedRequest(Request["signed_request"]); 

      } 
      return false; 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (CMS.CMSHelper.CMSContext.ViewMode == CMS.PortalEngine.ViewModeEnum.LiveSite) 
      { 
       if (parsePageSignedRequest()) 
       { 
        notLikedRegion.Visible = false; 
        likedRegion.Visible = true; 
       } 
       else 
       { 
        notLikedRegion.Visible = true; 
        likedRegion.Visible = false; 
       } 
      }    
     }