我正在尝试在 Kentico 设置页面门。我应该考虑使用 Web 部件还是模块?我以前玩过这两种方法,所以知道如何使用它们进行基本开发。
问问题
222 次
1 回答
1
我之前使用页面模板完成了它。其实很简单。Facebook 有一个参数“signed_request”,它是 base64 编码的,它会发回(如果您在 Facebook 中有应用程序设置)。您需要对其进行解码并使用 json 查找“liked”变量,该变量应为真或假。
我在页面上有 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;
}
}
}
于 2011-08-04T01:32:26.537 回答